Android基础学习——Activity生命周期

来源:互联网 发布:下载地毯设计软件 编辑:程序博客网 时间:2024/06/04 19:46

在Activity会按需重载一些方法,onCreate是免不了的,在一个Activity正常的启动过程中,他们被调用的顺序是:

         onCreate->onStart->onResume

在Activity被销毁的顺序是:

         onPause->onStop->onDestroy

这是一个完整的生命周期。


如果程序正在运行的时候来电话了,Activity会被中止:onPause->onStop

Activity恢复的时候:onstart->onResume

如果打断程序的是一个Theme为Translucent或者Dialog的Activity,那么Activity中止的时候只是:onPause。

恢复的时候:onResume。


这几个方法中系统在做什么:

onCreate: 在这里创建界面,做一些数据的初始化工作;

onStart: 到这一步变成用户可见不可交互的;

onResume: 到这里变成和用户可交互的(Activity栈系统通过栈的方式管理这些Activity的最上面,运行完全弹出栈,则回到上一个Activity)

onPause:到这一步是可见不可交互的,系统会停止动画(这里保存一些数据,在onResume里读出来。注意:这个方法里做的事情时间要短,因为下一 个activity不会等到这个方法完成才启动)

onStop:变得不可见,被下一个Activity覆盖了。

onDestroy:这是Activity被销毁的最后一个调用的方法,可能是外面类调用了finish方法,或者是被系统回收掉了。可用isFinishing()来判断。如果有ProgressDialog在线程中转动,在onDestroy里把它cancel。不会等结束的时候,调用的Dialog的cancel方法会抛异常。


onPause,onStop,onDestroy,三种状态下Activity都有可能被系统回收掉。

为了保证程序的正确性,要在onPause里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上。

实际工作中会因为生命周期的变化带来很多的问题,比如应用程序开启了线程,这时候被中断了,一般采用数据回滚,来处理线程。因为Activity可能被回收,所有线程中使用的变量和一些界面元素就需要注意,我一般是采用Android的Handler来处理线程和界面交互的问题。


这些方法都是被ActivityManagerService 回调的

0 0
原创粉丝点击