您的位置:首页 > 其它

Activity的生命周期

2016-08-05 15:36 127 查看
转载请注明出处:TuTu



看了上面的流程图之后,下面就为大家介绍一下它的调用流程。

启动Activity

1. onCreate
2. onStart
3. onResume


退出Activity

1. onPause
2. onStop
3. onDestroy


Home键,程序进入后台

1. onPause
2. onStop


重新启动

1. onRestart
2. onStart
3. onResume


休眠/恢复

1. onPause
2. onSaveInstanceState
3. onStop


1. onRestart
2. onStart
3. onResume


屏幕旋转

未重写onConfigurationChanged()

1. onCreate
2. onStart
3. onResume4. onPause
5. onSaveInstanceState
6. onStop
7. onDestroy
8. onCreate
9. onStart
10. onRestoreInstanceState
11. onResume


重写onConfigurationChanged()

1. onCreate
2. onStart
3. onResume4. onConfigurationChanged


来电

打开来电界面

1. onPause
2. onStop


关闭来电界面

1. onRestart
2. onStart
3. onResume


Activity跳转页面

A—B

1. onPause
2. onCreate
3. onStart
4. onResume
5. onStop


A—B—A Back返回

1. onPause
2. onRestart
3. onStart
4. onResume
5. onStop
6. onDestroy


当A跳转到B的时候A就进入了停止状态,这个时候由于系统内存不足就把A给回收了。当重新点击Back返回键时就不会执行onRestart方法了,而会执行onCreate方法,A就会被重新创建一次。

那当我们在A中输入的一些文字就消失了,对用户的体验也就不好。查看文档得知Activity中有一个onSaveInstanceState的回调方法,可以在被系统回收之前调用以保存输入时的临时数据。

@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState);
String tempData = "Hello";
outState.putString("data", tempData);
}


可以看到有一个Bundle类型的参数,我们就可以调用它的方法来进行保存数据了。比如putString()、putInt(),第一个用来保存字符串的,第二个保存整数型数据。当然还有其他的方法,想要保存什么类型的数据就以此类推就行了。

putString方法中的第一个参数就是我们为它取的别名用来在取值的时候获取它保存的值的。

保存完了那怎么取出来呢?

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data");
}
}


可以看到onCreate方法中也是使用的Bundle类型的参数,那么取数据也就在这方法里咯。最好先判断下是否为空,如果没值的话会报错的。取值就把存数据时起的别名获取就能取到里面的值了。获取的类型也要一样,比如存值时使用的putString方法,那么取值也要用getString方法。

取出值就可以做恢复操作了,比如将输入的文字重新赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: