`

android之纵横屏幕切换时保存数据

 
阅读更多

java代码:

package com.sxt.day04_05;


import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


import com.sxt.day04_05.R;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;


public class MainActivity extends Activity {
String mUsers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("main","onCreate()");
if(savedInstanceState==null){// 若是第一次创建MainActivity
//从服务端下载users.json文件
downloadUsers();
}else{
mUsers=savedInstanceState.getString("users");
Log.i("main",mUsers);
}
}


//从服务端下载users.json文件
private void downloadUsers() {
new Thread(){//sdk从4.0开始要求下载数据必须在工作线程中执行
public void run() {
InputStream in =null;
try {
URL url=new URL("http://10.0.2.2/users.json");
URLConnection conn = url.openConnection();
in = conn.getInputStream();
byte[] buffer=new byte[1024];
int len = in.read(buffer);
mUsers=new String(buffer, 0, len);
Log.i("main",mUsers);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
}.start();
}


@Override
protected void onStart() {
super.onStart();
Log.i("main","onStart()");
}

@Override
protected void onResume() {
super.onResume();
Log.i("main","onResume()");
}

@Override
protected void onPause() {
super.onPause();
Log.i("main", "onPause()");
}

@Override
protected void onStop() {
super.onStop();
Log.i("main","onStop()");
}

@Override
protected void onDestroy() {
super.onDestroy();
Log.i("main","onDestroy()");
}

@Override
protected void onRestart() {
super.onRestart();
Log.i("main","onRestatr()");
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i("main","onSaveInstanceState()");
outState.putString("users", mUsers);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.i("main","onRestoreInstanceState()");
}
}

分享到:
评论

相关推荐

    037集-Activity纵横屏切换的数据保存与恢复

    本教程“037集-Activity纵横屏切换的数据保存与恢复”深入探讨了如何在屏幕旋转时妥善处理数据保存与恢复的问题,以确保用户体验的连贯性。 首先,我们来了解Activity的生命周期。在Android中,Activity有多个状态...

    android屏幕切换项目

    开发者需要理解Android的生命周期管理,特别是在屏幕切换时,确保Activity或Fragment的正确启动和销毁。 为了优化用户体验,我们还需要考虑一些额外的点,如使用动画平滑过渡,处理配置更改(如屏幕旋转)导致的...

    Android解决多个Fragment切换时布局重新实例化问题,并保存当前fragment页面,系统回收后还原之前fragment页面,更新版

    总之,避免Fragment在切换时重新实例化并保存其状态是Android开发中的常见挑战。通过巧妙地使用生命周期方法、ViewModel、回退栈和PagerAdapter,我们可以确保用户的交互体验不会因为界面的切换而中断,即使在系统...

    横竖屏切换保存ListView数据

    如果使用了Loader来异步加载数据,那么在屏幕旋转时,LoaderManager会自动保存并恢复Loader的状态,这使得在横竖屏切换时,数据加载不会重复。 7. **注意事项** - 使用`setRetainInstance(true)`在Fragment中可以...

    Android白天夜晚模式切换实现

    在Android应用开发中,提供白天和夜晚模式切换是一项常见的需求,它可以为用户提供更舒适的视觉体验。白天模式通常采用亮色调,而夜晚模式则通常切换到暗色调,减轻用户在低光照环境下的眼睛疲劳。本教程将详细介绍...

    Android应用源码之(横竖屏切换处理-IT计算机-毕业设计.zip

    这份"Android应用源码之(横竖屏切换处理)"的资源,是一个非常适合毕业设计学习的示例,可以帮助开发者深入理解如何在Android应用中处理屏幕旋转的问题。 首先,Android系统默认支持横竖屏的自动切换,但有时为了...

    Android学习笔记(三七):再谈屏幕切换.doc

    本文主要探讨了在Android应用中处理屏幕旋转时的数据保存与恢复,以及如何避免不必要的屏幕切换。 首先,当屏幕从横屏切换到竖屏,或者反之,Android系统会默认销毁当前Activity并重建一个新的实例以适应新的屏幕...

    Android的屏幕切换左右滑动效果

    在Android开发中,实现Activity之间的屏幕左右滑动切换效果是一种常见的需求,这能为用户提供更加流畅和直观的交互体验。这种效果通常是通过使用Fragment或ViewPager等组件来实现的。以下将详细讲解如何在Android V...

    Tab切换形势大全及FragmentPagerAdapter保存刷新数据实现

    在Tab切换时,数据保存的关键在于重写`getItem()`和`instantiateItem()`方法,确保Fragment实例被正确恢复,同时在`onSaveInstanceState()`中保存关键数据。 四、TabLayout与PagerTabStrip 在Android Design ...

    Android横竖屏切换处理Demo源码.rar

    在屏幕旋转时,如果Activity中的数据需要保留,应该在`onSaveInstanceState(Bundle outState)`方法中保存关键数据,并在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle ...

    android手机屏幕共享软件

    1. **捕获屏幕内容**:Android提供了一个叫做`SurfaceComposerClient`的类,开发者可以通过这个类获取到屏幕的BufferQueue,进而捕获屏幕每一帧的图像数据。另外,`MediaProjection` API是Android 5.0(Lollipop)...

    android横竖屏切换和自适应屏幕

    4. **保存和恢复状态**:在横竖屏切换时,为了防止数据丢失,开发者需要使用onSaveInstanceState()和onRestoreInstanceState()方法来保存和恢复Activity的状态。 5. **禁止横竖屏切换**:如果不想让用户在应用中...

    Android中屏幕触摸轨迹的绘制、保存与播放

    总结来说,实现“Android中屏幕触摸轨迹的绘制、保存与播放”涉及的关键技术包括`Canvas`绘图、`MotionEvent`处理、数据序列化与反序列化、文件操作以及可能的图形优化。通过理解并掌握这些知识点,开发者可以创建出...

    Android 保存List数据(SharedPreferences)

    在处理List数据时,由于SharedPreferences不直接支持List类型的存储,我们需要将其转换为可存储的格式。常见的方法有两种: 1. **序列化**:将List转换为JSON字符串。Android系统提供了`org.json`库,我们可以使用`...

    Android4.0下使用framebuffer抓屏并保存成bmp文件

    在Android系统中,framebuffer(帧缓冲)是操作系统用于存储屏幕图像数据的内存区域,它直接与硬件交互,负责将像素数据渲染到屏幕上。在Android 4.0(Ice Cream Sandwich)版本中,开发者可以通过访问framebuffer来...

    Android 日间/夜间模式 主题切换

    ThemeDemo日夜间模式切换,页面切换的时候附带动画特效, 关于多主题实现的,大牛这里的做法是继承AppCompatActivity,置换了AppCompatDelegate中AppCompatViewInflater中的createView 方法.实现了对 xml 控件的控制. ...

    Android仿美团城市切换,高德定位

    在Android应用开发中,实现类似...综上所述,实现"Android仿美团城市切换,高德定位"功能涉及到Android UI设计、数据管理、网络通信、地图API集成等多个方面,开发者需要具备扎实的Android基础和对第三方库的熟练运用。

    Android Fragment切换动画

    Fragment可以在Activity中动态添加、删除或替换,这在设计适应不同屏幕尺寸和配置的应用时非常有用。当我们想要增强用户体验,使界面变化更加平滑和吸引人时,可以使用Fragment切换动画。本篇文章将深入探讨Android...

    Android之Fragment多个页面切换实现

    在本教程中,我们将深入探讨如何在Android应用中使用Fragment实现多个页面的切换。 首先,了解Fragment的基本概念。Fragment是Activity的一部分,有自己的生命周期,可以在Activity中添加、移除或替换。它们有自己...

Global site tag (gtag.js) - Google Analytics