保存和恢复activity的状态数据自己实现

 1 public class DemoActivity extends BaseActivity {
 2     private CheckBox cb_gender;
 3     private String temp;
 4     private Button bt_changeor;
 5
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.a_demo);
10         // 如果savedInstanceState为空,则没有调用onSaveInstanceState方法
11         if (savedInstanceState == null) {
12             UtilsLog.i(TAG, "onCreate : savedInstanceState == null");
13         }
14         // 如果savedInstanceState不为空,则用户调用onSaveInstanceState方法,并给Bundle赋值了。
15         else {
16             temp = savedInstanceState.getString("temp");
17             UtilsLog.i(TAG, "onCreate : savedInstanceState != null && temp = " + temp);
18         }
19         initView();
20     }
21
22     private void initView() {
23         bt_changeor = (Button) findViewById(R.id.bt_changeor);
24         cb_gender = (CheckBox) findViewById(R.id.cb_gender);
25         //
26         bt_changeor.setOnClickListener(new OnClickListener() {
27
28             @Override
29             public void onClick(View v) {
30                 if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
31                     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
32                 } else if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
33                     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
34                 }
35             }
36         });
37         cb_gender.setHint("选择");
38         cb_gender.setChecked(true);
39     }
40
41     @Override
42     protected void onStart() {
43         super.onStart();
44     }
45
46     @Override
47     protected void onRestoreInstanceState(Bundle savedInstanceState) {
48         super.onRestoreInstanceState(savedInstanceState);// onStart调用了此方法
49         UtilsLog.i(TAG, "onRestoreInstanceState 恢复状态数据 && temp = " + savedInstanceState.getString("temp"));
50     }
51
52     @Override
53     protected void onResume() {
54         super.onResume();
55     }
56
57     // 适合保存UI的状态(Edittext输入的数据,checkbox的选中状态)、成员变量的值。
58     @Override
59     protected void onSaveInstanceState(Bundle outState) {
60         super.onSaveInstanceState(outState);
61         /**
62          * onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的.
63          * 比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的
64          */
65         UtilsLog.i(TAG, "onSaveInstanceState 保存数据");// 调用顺序 onPasuse -> onSaveInstanceState -> onStop
66         /**
67          * 当activity再次启动时,这个Bundle会传递给onCreate()方法和随着onStart()
68          * 方法调用的onRestoreInstanceState(),<br>
69          * 所以它们两个都可以恢复捕获的状态。
70          */
71         outState.putString("temp", "状态数据");
72     }
73
74     @Override
75     protected void onPause() {
76         super.onPause();
77         /**
78          * onPause()是三个中的第一个,它也是唯一一个在进程被杀死之前必然会调用的方法──onStop() 和 onDestroy()
79          * 有可能不被执行。<br>
80          * 因此应该用 onPause() 来将所有持久性数据(比如用户的编辑结果)写入存储之中。
81          */
82     }
83
84     @Override
85     protected void onStop() {
86         super.onStop();
87     }
88
89     @Override
90     protected void onDestroy() {
91         super.onDestroy();
92     }
93
94 }

进入MainsplashActivity界面

进入DemoActivity界面

切换activity的屏幕方向

点击返回,到MainSplashActivity

保存和恢复activity的状态数据自己实现

时间: 2024-08-05 16:38:49

保存和恢复activity的状态数据自己实现的相关文章

保存和恢复activity的状态数据[转]

转自:here 一般来说,调用onPause()和onStop()方法后的activity实例仍然存在于内存中,activity中的所有信息和状态数据都不会消失,当activity重新回到前台后,所有的改变都会保留. 但是当内存系统内存不足时,调用onPause()和onStop()方法的activity可能被摧毁.此时内存中就不会存在有该activity实例对象了. 为了避免这种情况,我们可以覆盖onSaveInstanceState()方法来接受一个Bundle类型的参数,我们可以将该act

【转】android笔记--保存和恢复activity的状态数据

一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留. 但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了. 如果之后这个activity重新回到前台, 之前所作的改变就会消失. 为了避免此种情况的发生, 开发者可以覆写onSaveIn

Android 保存和恢复activity的状态数据

一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留. 但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了. 如果之后这个activity重新回到前台, 之前所作的改变就会消失. 为了避免此种情况的发生, 开发者可以覆写onSaveIn

【Android】11.2 通过重写对应的方法保存和恢复实例的状态

分类:C#.Android.VS2015: 创建日期:2016-02-21 一.简介 通过重写(也叫回调)对应的方法来管理Activity的生命周期,比如用户旋转屏幕时应用程序要能自动保存和恢复实例的状态,这对于开发一个健壮而又灵活的应用程序而言至关重要. 1.本节要点 一旦真正理解了Activity的生命周期,就可以轻松自如地通过C#代码去控制它了.这一节我们主要学习如何用Boundle存储简单类型的数据(比如int.double.string.bool.--等). 当一个Activity停止

Android处理运行时变更保存数据状态恢复Activity

一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态. 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关应用状态的数据. 然后在 onCreate() 或 onRestoreInstanceState() 期间恢复 Activity 状态. 对于大量数据:用

Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状态之外, 还需要用户手动保存一些成员变量. Fragment的状态有它自己的实例状态和其中的View状态, 因为其生命周期的灵活性和实际需要的不同, 情况会多一些. 根据源码, 列出了Fragment中实例状态和View状态保存和恢复的几个入口, 便于分析查看. 最后专门讲了WebView状态保存和

保存Activity的状态

一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留. 但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了. 如果之后这个activity重新回到前台, 之前所作的改变就会消失. 为了避免此种情况的发生, 开发者可以覆写onSaveIn

Android基础部分再学习---activity的状态保存

主要是bundle   这个參数 參考地址:http://blog.csdn.net/lonelyroamer/article/details/18715975 学习Activity的生命周期,我们知道,当Activity进入到paused或者stopped状态后,这个Activity的状态仍然保存着. 由于这个Activity对象仍然保存在内存中.它的全部信息和状态仍然是存在的.当这个Activity再次返回到前台是,它仍然保持着离开时候的样子. 然而.假设Activity进入到了后台.系统为

android 19 activity纵横屏切换的数据保存与恢复

Bundle类:竖屏的activity换到横屏的activity的时候,会把竖屏的activity杀掉横屏的activity创建,竖屏的activity会有一些计算结果,可以用数据存起来,存到内存里面,然后存在横屏的activity. Intent类putExtra("user", user);传数据的时候用的就是Bundle对象, private Bundle mExtras; Bundle是一个map, package com.sxt.day04_03; import java.i