Activity的生命周期

转载请注明出处: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. onResume
 4. onPause
 5. onSaveInstanceState
 6. onStop
 7. onDestroy
 8. onCreate
 9. onStart
 10. onRestoreInstanceState
 11. onResume

重写onConfigurationChanged()

 1. onCreate
 2. onStart
 3. onResume
 4. 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方法。
取出值就可以做恢复操作了,比如将输入的文字重新赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值