先看图:

Android中的activity通过onSaveInstanceState()方法保存activity的状态,在onCreate或者onRestoreInstanceState方法恢复状态,如果是通过onRestart方法前端运行的话,只会执行onSaveinstanceState方法。直接看代码:

package com.hebaijun.savestate;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class SaveStateActivity extends Activity {public static final String TAG = "SaveStateActivity";    @Override    public void onCreate(Bundle savedInstanceState) {    if (savedInstanceState!=null) {    Log.v(TAG, savedInstanceState.getString("data"));}        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Log.v(TAG, "onCreate");    }    @Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {Log.v(TAG, savedInstanceState.getString("data"));super.onRestoreInstanceState(savedInstanceState);Log.v(TAG, "onRestoreInstanceState");}@Overrideprotected void onSaveInstanceState(Bundle outState) {outState.putString("data", "example");super.onSaveInstanceState(outState);Log.v(TAG, "onSaveInstanceState");}@Overrideprotected void onPause() {super.onPause();Log.v(TAG, "onPause");}@Overrideprotected void onResume() {super.onResume();Log.v(TAG, "onResume");}@Override   protected void onStart() {   super.onStart();   Log.v(TAG, "onStart");   }@Overrideprotected void onRestart() {super.onRestart();Log.v(TAG, "onRestart");}}


main.xml

<?xml version="1.0" encoding="utf-8"?>        
1.运行程序后我们按HOME键,然后我们重新进入程序,Log如图:
  • 我们可以看出onSaveInstanceState方法在onPause方法前执行。
  • 程序恢复执行的时候调用了onRestart方法,并没有调用 onRestoreInstanceState方法。
2.运行程序后按BACK键,Log如图:
  • 程序并没有调用onSaveInstanceState方法,因为按BACK键表明用户已经明确退出,所以不会执行保存状态的操作。就是说 onSaveInstanceState能不能被执行到是不确定的,要保存永久的数据话还是在onPause方法中用其他方式保存。
  • 如果在edittext中输入字符的话,重新执行也不会重新出现。

3.运行程序,在EditText中输入字符串,切换横竖屏。Log如图:
  • 运行界面没有截图,但是可以看到,EditText中的字符有保存下来,说明UI是自动保存和恢复的。前提是这个View要赋给id: android:id="@+id/editText1"
  • onRestoreInstanceState方法在onStart后面onResume前面执行。
  • 可以附加其他你想保存的状态,在 onCreate或者onRestoreInstanceState方法中都可以恢复。


 

更多相关文章

  1. Android状态栏适配源码解析。
  2. android 连接服务器的方法及安全性问题
  3. android WebView登录状态session id 和cookie同步
  4. 如何使用arm-eabi-gdb调试android c/c++程序
  5. android中Bitmap的放大和缩小的方法
  6. Android遍历文件Listfile返回值为null问题解决方法适用Android8.
  7. android唤起另外一个程序
  8. Android 最新获取手机内置存储大小,SD卡存储空间大小方法
  9. android 获取camera状态?

随机推荐

  1. 键盘自动弹出解决
  2. PackageManagerService简介
  3. android 开发中常用颜色,以及一些颜色的代
  4. android appwidget service的初始化
  5. Android保留两位小数方法
  6. 自定义自己的AlertDialog
  7. App应用之提交到各大市场渠道
  8. Android(安卓)bluetooth介绍(三): 蓝牙扫描(
  9. Android5.0通知变化浅析
  10. android下获取有线和无线的Ip地址