一、完整生存期:
范围:是指对onCreate方法的第一次调用和对onDestroy方法的最后一次调用之间的时间范围(在某些特定的情况下onDestroy方法可能没调用活动进程就被终止了)
过程:onCreate接收包含UI状态的Bundle,改对象是最后一次调用onSaveInstanceState时保存的。恢复上次一次的界面状态既可以通过onCreate方法也可以通过,onRestoreInstanceState来实现
注意:在android中最好避免创建短期的对象,对象的快速创建和销毁会导致额外的垃圾收集过程,如果创建的对象时有规律的建议只在onCreate生成一次。
经历次数:一次
二、可见生存期
范围:是指调用onStart和onStop之间的那段时间,在这段时间活动可能是没有焦点的或者是可能被部分遮挡了(Android运行时可能不调用onStop而终止可见生存周期的活动)
过程:onCreate之后就会调用onStart,当Activity处于停止状态,即他被一个新的Activity覆盖掉了,用户通过Activity回到前一个Activity时就会调用onRestart 然后调用onStart 然后再调用onR
经历次数:多次,Activity会在前台和后台来回切换
三、活动生存期
范围:是指onRsume及其对应的onPause之间那段时间
过程:调用onStar后调用onRestar,然后就会调用onResume,当一个新的Activity被打开后,原来的Activity就会调用onPause,如果新打开的Activity并没有完全覆盖原来的Activity或者新的Activity是半透明状态原来的Activity还可见那么只会调用onPause使得Activity处于可见生存期,否则继续往下调用onStop。在onPause之前会调用onSaveInstaceState,用于保存UI状态,这个UI状态会传递给onCrate和onRestoreInstanceState
注意:在活动生存期内可以安全的假设onSatveInstance和onPause会被调用,大部分活动至少需重写onPause方法来提交未保存的改动,因为在onPause之外活动可能在没有任何警告的情况下被终止。在活动不在前台的时候也可以根据应用程序的架构,选择挂起线程、进程或者广播接收器。onResume方法可以是轻量级的,因为要求加载UI状态的时候可以由onCreate和onRestoreIntance方法处理。使用onResume可以重新注册已经使用onPause停止的广播接收器或者其他进程。onPause最好也是轻量级的因为下一个要显示到前台的activity的onRsume要等当前activity的onPause返回后才执行。
四、其他
1、当Activity处于暂停或停止状态下,操作系统内存缺乏可能会销毁Activity。或者其他意外突发情况,Activity被操作系统销毁,内存回收时onSaveInstanceState会被调用,但是当用户主动销毁一个Activity时(例如按返回键)onSaveInstanceState就不会被调用,onSaveInstanceState适合保存一些临时性的数据,onPause适合保存一些持久化的数据
2、onRestoreInstanceState是在onStart和onPostCreate之间执行用户恢复UI状态
3、如果数据比较重要但是数据在运算中则应该缓存他们,如果以及运输结束有结果了则应该对他们进行持久化操作
4、只要Activity被覆盖一定会调用onPause方法,只要Activity重新回到前台一定会调用onResume方法
5、开发文档中的资料:
参考资料:
android开发文档
http://wenku.baidu.com/view/b387f9d9ce2f0066f5332282.html
Professional Android 2 Application Development P74~78