android Activity状态以及生命周期
16lz
2021-01-26
一. Activity的状态
在 android 中,Activity 拥有四种基本状态:
- Active/Runing:一个新的Activity入栈后,它在屏幕最前端,处于栈的最顶端,处于可见并且可交互的激活状态。
- Paused:当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
- Stoped:当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时的状态。
- Killed:Activity 被系统杀死回收或者没有被启动时的状态。
当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。下图说明了 Activity 在不同状态间转换的时机和条件:
二. Activity的生命周期
Activity的生命周期图:
Activtiy的生命周期包含:
- protected void onCreate(Bundle savedInstanceState):一个 Activity 的实例被启动时调用的第一个方法。一般情况下,我们都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置用户界面等工作。大多数情况下,我们都要在这里从 xml 中加载设计好的用户界面。
- protected void onStart():该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用。
- protected void onResume():在 Activity 从 Pause 状态转换到 Active 状态时被调用。一般在这块做数据恢复工作。
- protected void onPause():在 Activity 从Active状态转换到Pause状态时被调用。一般我们在这里保存 Activity 的状态信息。
- protected void onStop():在 Activity 从 Active 状态转换到 Stop 状态时被调用。
- protected void onDestroy():在 Active 被结束时调用,它是被结束时调用的最后一个方法,在这里一般做些释放资源,清理内存等工作。
- protected void onRestart():在 Activity 从 Stop 状态转换为 Active 状态时被调用,不经常使用。
1.我们一般打开一个程序的时候,就会先后执行该程序主Activity的onCreate()->onStart()->onResume()三个方法。 2.我们推出程序(或者点击BACK键),就好先后执行该Activity的onPause()->onStop()->onDestory()三个方法。
3.当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。
4.而当我们再次启动ActivityDemo应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法。
这里我们会引出一个问题,当我们按HOME键,然后再进入Activity应用时,我们的应用的状态应该是和按HOME键之前的状态是一样的。所以,我们一般在onPause()里面保存一些数据和状态。在onResume()里面来恢复数据。
更多相关文章
- 老生常谈Android(安卓)HapticFeedback(震动反馈)
- Android(安卓)UI事件处理
- Android中的WebView的使用
- Android中使用SurfaceView的方法
- Android(安卓)沉浸式状态栏原理
- Android新的网络请求框架volley源码解释及示例
- Android设计模式系列--模板方法模式
- android ndk生成第三方库的so方法(ndk-build,Application.mk,Andro
- Android中WebView加载本地Html,与JavaScript与Android方法相互传