Android艺术——深看Activity的生命周期

探究Activity的生命周期

 

1.典型情况下的生命周期分析onCreate 初始化工作,加载布局资源和数据;onStart ac正在启动但是无法交互,后台;onResume ac可见,显示在前台;onPause 正在停止,必须先执行完才能执行新的acOnstop 即将停止,回收工作;onDestory 即将销毁,回收与资源释放;onRestart 重新启动

 

2.onStartonResumeonPauseonStop,有什么实质的不同。

答:onStartonResume是从Activity是否可见这个角度来回调的;后者是从Activity是否位于前台这角度来回调的。

 

3.在新Activity启动之前,栈顶的Activity需要先onPause后,新Activity才能启动。不能在onPause中做重量级的操作,因为必须onPause执行完成以后新的Activity才能Resume。所以:我们知道onPauseonStop都不能执行耗时的操作,尤其是onPause,这也意味着,我们应当尽量在onStop中做操作,从而使得新Activity尽快显示出来并切换到前台

 

4.异常情况下的生命周期分析

  1. )情况1:资源相关的系统配置发生改变导致Activity被杀死并且重新创建
    1. 例子:当前Activity处于竖屏状态,如果突然旋转屏幕,由于系统配置发生改变,默认情况下Activity就好被销毁并且重新创建。
    2. 在这种意外情况下,系统会调用onSaveInstanceState来保存当前Activity的状态。这个方法只在异常终止的情况下出现,当新的Activity被创建后,系统会调用onRestoreInstanceState取出之前保存的数据并且恢复。从时序上来说,onRestoreInstanceState的调用时机在onStart之后。
    3. Activity一样,每个View都有SR,都是通过委托思想,上层委托下层,例如TextView会保存自己的文本选中状态和文本内容。
  2. )资源内存不足导致低优先的Activity被杀死

                1.比较好的方法是将后台工作放在Service中从而保证进程有一定的优先级。

                2.Activity按照优先级来分:前台Activity(正在和用户交互)>可见但非前台Activity(弹出对话框后,不能直接交互)>后台Activity(被暂停的)。

posted @ 2017-06-21 10:10  lusCodding  阅读(190)  评论(0编辑  收藏  举报