Activity生命周期概述

 

 

1、Activity的整个生命周期如上图呈金字塔状:当创建一个Activity新实例时从图左侧的onCreate()事件开始逐渐向顶端走,当到达最顶端的Resumed状态时便已到可与用户进行交互的状态,而当用户离开Activity或被中断时,Activity状态开始往图右侧的底端走;

 

2、一旦onCreate()方法执行完毕,会迅速执行onStart()和onResume(),Activity不会停留在Created或Started状态,但当onResume()事件被发生后,Activity会一直维持在Resumed状态直到一些事情发生(如退出或被半或全遮挡);

 

3、在某些情况下,Activity只会往图右侧的底端走一两步并在该处等待,这些情况如当前的Activity被半遮挡时会被onPause()并等待在Paused,再如被全遮挡时会被onStop()并等待在Stopped,返回Activity时则从当前等待处重新绕回最顶端;

 

4、无论任何原因使Activity停止或退出,onPause()总是第一个信号,且总是会在onStop()之前,而一旦Activity停止后,系统就有可能会自动销毁Activity实例以回收内存,甚至会不执行onDestory()而直接杀死应用的进程,因此用onPause()和onStop()来释放内存更为可靠;

 

5、当发生onPause()或onStop()时应注意保存用户数据,也应该销毁一些耗电操作等以增强用户体检,如拍摄类应用在发生onStop()时可停止Camera,当恢复时如在onResume()中再启用Camera;

 

6、通过onRestoreInstanceState()和onSaveInstanceState()这两个事件可以将数据保存在Bundle中,以应对Activity被操作系统销毁及再恢复时的状态回滚,onRestoreInstanceState()发生在onResume()事件之前,onSaveInstanceState()发生在onResume()事件之后。

 

总之,正确使用Activity生命周期可保障应用程序有良好的表现,必须注意如下几个方面

当用户接听电话或者转去另外一个应用程序时,不要让程序崩溃;

当用户没有激活使用它时,不消耗宝贵的系统资源;

当用户离开你的应用程序并在稍后的时间返回,不会丢失用户的进度;

当用户屏幕在横向与纵向旋转切换时,不会崩溃或者丢失用户进度。

猜你喜欢

转载自wangym.iteye.com/blog/1779225