一. Activity的状态

在 android 中,Activity 拥有四种基本状态:

  1. Active/Runing:一个新的Activity入栈后,它在屏幕最前端,处于栈的最顶端,处于可见并且可交互的激活状态。
  2. Paused:当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
  3. Stoped:当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时的状态。
  4. 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()里面来恢复数据。





更多相关文章

  1. 老生常谈Android(安卓)HapticFeedback(震动反馈)
  2. Android(安卓)UI事件处理
  3. Android中的WebView的使用
  4. Android中使用SurfaceView的方法
  5. Android(安卓)沉浸式状态栏原理
  6. Android新的网络请求框架volley源码解释及示例
  7. Android设计模式系列--模板方法模式
  8. android ndk生成第三方库的so方法(ndk-build,Application.mk,Andro
  9. Android中WebView加载本地Html,与JavaScript与Android方法相互传

随机推荐

  1. 苹果ios开发的基础语言介绍
  2. 苹果iOS开发语言用什么?
  3. 微信小程序通过code获取openid
  4. 如何学习画画?零基础学画画的步骤
  5. 人体躯干怎么画?动漫人体躯干画法
  6. WSL 2 的安装过程(以及介绍)
  7. 使用APICloud AVM多端框架开发课程表功能
  8. 【APICloud直播】2022移动开发技术风向标
  9. Android(安卓)7.0 Nougat不得不知的11项
  10. Android(安卓)如何获取所有的wifi连接历