Activity的生命周期

Activity的状态:

1、运行状态:用户可以看到,并且可以进行交互,位于最顶层的Activity;

2、停止状态:没有退出,被完全覆盖或者按下home键,它的状态信息和数据都还保留着,一旦内存不足,将会被销毁;

3、暂停状态:部分被覆盖,或者锁屏, 它的状态信息和数据都还保留着,内存不足时可能会销毁(几率要比停止状态小);

4、销毁状态:系统销毁或者人为的销毁

一个Activity从被创建到被销毁执行的生命周期方法

onCreate方法:Activity的初始化

onStart方法:Activity显示了,但是不能交互

onRestoreInstanceState:该方法用于恢复数据,当被系统销毁的activity又被系统重新创建时(屏幕的横竖屏切换:先销毁当前的activity在创建一个新的activity),执行该方法(在onResume之前执行);

onResume方法:进入运行状态,可以进行交互

onRestart方法:重新启动

onPause方法:暂停,Activity失去焦点了

onSaveInstanceState:用于保护activity的状态信息,当一个activity变的容易被销毁,比如按下home键,长按home键,内存不足,启动另一个activity,在这种状态下,希望activity在被系统销毁之前保存相关的数据,那么就使用这个方法(此方法在onPause之后,onStop之前执行);

onStop:停止,被完全覆盖或者按下home键

onDestory:销毁状态,Activity彻底清除

在清单文件中加入配置android:configChanges = “keyboard|screenSize|orientation”,可使横竖屏切换时就直接使用当前的activity对象,不会再进行销毁重建当前activity,但是会回调onConfigurationChanged()方法

onConfigurationChanged方法中判断屏幕是否横屏

image

一个Activity进入到执行状态时执行的方法:onCreate(),onStart(),onPresume()

image

一个Actvity从运行到销毁的状态:onPause()、onStop()、onDestory()

image

 

一个Actvity进入另一个Actvity:

从MainActivity进入到OtherActivity:MainActivityxian'zhi'xing先执行onPause(),然后OtherActivity执行onCreate()、onStrat()、onResume()、然后MainActivity执行Stop();

image

按返回键Activity的执行状态

从OtherActivity回到MainActivity:OtherActivity先执行onPause(),然后MainActivity执行onRestart(),onStart(),onResume(),然后OtherActivity执行onStop(),onDestroy()

image

下面从书中找了张图,感觉更明了:

image

 

如何利用onSaveInstanceState保存关闭当前activity之前的数据:

使用系统传过来的Bundle对象

outState.putString(“title”,”this is a title”);

恢复数据:onCreate方法中

if(savedInstanceState!=null){

     String value = savedInstanceState.getString(“title”);

}

posted @ 2015-11-17 17:30  wmkill  阅读(173)  评论(0编辑  收藏  举报