android学习笔记——Activity的生命周期

1、完整生存期
     活动在onCreate()和onDestroy()方法之间所经历的,就是完整生存期。一般情况下,一个活动会在onCreate()中完成各种初始化操作,而在onDestroy()中完成释放内存的操作。
2、可见生存期
    活动在onStart()和onStop()方法之间所经历的,就是可见生存期。在可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理的管理那些对用户可见的资源。比如在onStart()中对资源进行加载,而在onStop()中对资源进行释放,从而保证处于停止状态的活动不会占用过多的内存。
3、前台生存期
    活动在onResume()和onPause()方法之间所经历的,就是前台生存期。在前台生存期内,活动总是处于运行状态的,此时的活动是可以与用户进行交互的,我们平时接触最多的就是这个状态下的活动。
还有一个在这些之外,而又会不断出现的方法onRestart()。即在重启一个活动时会用到,就是该活动被收入栈中后没有被回收,此时不需要onCreate(),只需onRestart、onStart、onResume顺序调用,如果被回收的话就需要重新onCreate了。
用张图来说明一下以上的内容
android学习笔记——Activity的生命周期_第1张图片
活动被回收了怎么办?
这样就引出了一个新的问题,如果活动中存有一些临时的数据该怎么办呢?重新创建的话数据一定不在了呀?
在Activity中提供了一个这样的方法:onSaveInstanceState()回调方法,这个方法保证活动被回收之前调用,它携带一个Bundle类型的参数,可以使用putString()、putInt()等方法,参数是以键值对的方式进行传递。
数据恢复
仔细看看onCreate方法,它提供了一个Bundle参数,那这你就该明白怎么做了吧~
if(saveInstanceState != null){
     String tempData = saveInstanceState.getString("data");
     Log.d(TAG,tempData);
}

对于Bundle的传递方式,其实可以将Bundle塞进Intent中,具体的用法查阅文档吧~

你可能感兴趣的:(android学习笔记)