Android Activity

Android 官方文档和其它不少资料都对 Activity 生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity 生命周期进行一次总结。

1. 对 Activity 简单介绍:

    (1) 一个 Activity 通常就是一个单独的窗口。

    (2) Activity 之间通过 Intent 进行通信。

    (3) Android 应用中每一个 Activity 都必须要在 AndroidManifest.xml 配置文件中声明,否则系统将不识别也不执行该 Activity。

2. Activity 是由 Activity 栈管理,当来到一个新的 Activity 后,新的 Activity 将被加入 Activity 的栈顶,之前的 Activity 位于新的 Activity 的底部。所以 Activity 一般有四种状态:

     (1) 活动状态:当 Activity 位于栈顶时,此时正好处于屏幕最上方,用户可见。

    (2)暂停状态:当 Activity 失去焦点但对于用户仍然可见(如栈顶的Activity是透明的或者栈顶Activity并不是铺满整个手机屏幕)。

     (3)停止状态:当 Activity 完全被其他 Activity 挡住,此时对于用户是不可见。

     (4)死亡状态:当 Activity 由于人工原因或者系统原因(如低内存等)被销毁。

3. Activity 生命周期的介绍(下面是一张来自官方文档的图):

   

   上图详细给出了 Activity 的生命周期,以及在不同的状态期间相应的回调方法,图中需注意一下几点:

     (1) entire lifetime (完整生命周期) :Activity 是由系统自动创建,一个简单完整的 Activity 的生命周期会按照如下顺序回调:onCreate  ==> onStart ==> onResume ==> onPause ==> onStop ==> onDestory 。

     (2) visible lifetime (可见生命周期) :当执行 onStart 回调方法时,开始被用户所见(也就是说,onCreate时用户是看不到此 Activity 的) ,一直到 onStop 之前此阶段被用户可见。

     (3) foreground lifetime (前台生命周期) :当执行到 onResume 回调方法时,Activity 可以响应用户交互,一直到 onPause 方法之前。

  下面是在实际操作中, Activity 的生命周期的变化:

     (1) Activity A 位于栈顶,用户操作,由 Activity A 跳转到 Activity B (B 完全覆盖 A),执行的回调方法有:A 被实例化,执行的回调有A:onCreate ==> A:onStart ==> A:onResume ,来到 Activity B ,将依次执行:A:onPause ==> B: onCreate ==> B: onStart ==> B:onResume ==> A:onStop 。

      (2)  在第一步操作后,点击 Back 键,将依次执行:B:onPause ==> A:onRestart ==> A:onStart ==> A:onResume ==> B:onStop ==> B:onDestroy。

      (3)  在第二步操作后,点击 Back 键,系统返回到桌面,将依次执行:A:onPause ==> A:onStop ==> A:onDestroy。

      (4)  在第二步操作后,点击 Home 键,系统返回到桌面,将依次执行:A:onPause ==> A:onStop。

      (5)  在第四步操作后,再次回到 Activity A :A:onRestart ==> A:onStart ==> A:onResume。

   可以看出点击 Back 键与 Home 键的区别在于是否会执行 onDestroy 。

 

上面是本人对 Activity 的认识与理解,如果有不对的地方,欢迎大家指出,本人积极改正,下面是本人博客:

https://blog.csdn.net/wuqingsen1

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值