转载地址:http://android.tgbus.com/Android/tutorial/200812/172711.shtml
除了Activity Lifecycle以外,Android还有一个Process Lifecycle的说明:

  在内存不足的时候,Android是会主动清理门户的,那它又是如何判断哪个process是可以清掉的呢?文档中也提到了它的重要性排序:

  1. 最容易被清掉的是empty process,空进程是指那些没有Activity与之绑定,也没有任何应用程序组件(如Services或者IntentReceiver)与之绑定的进程,也就是说在这个process中没有任何activity或者service之类的东西,它们仅仅是作为一个cache,在启动新的 Activity时可以提高速度。它们是会被优先清掉的。因此建议,我们的后台操作,最好是作成Service的形式,也就是说应该在Activity中启动一个Service去执行这些操作。

  2.接下来就是background activity了,也就是被stop掉了那些activity所处的process,那些不可见的Activity被清掉的确是安全的,系统维持着一个 LRU列表,多个处于background的activity都在这里面,系统可以根据LRU列表判断哪些activity是可以被清掉的,以及其中哪一个应该是最先被清掉。不过,文档中提到在这个已被清掉的Activity又被重新创建的时候,它的onCreate会被调用,参数就是onFreeze时的那个Bundle。不过这里有一点不明白的是,难道这个Activity被killed时,Android会帮它保留着这个Bundle吗?

  3.然后就轮到service process了,这是一个与Service绑定的进程,由startService方法启动。虽然它们不为用户所见,但一般是在处理一些长时间的操作(例如MP3的播放),系统会保护它,除非真的没有内存可用了。

  4.接着又轮到那些visible activity了,或者说visible process。前面也谈到这个情况,被Paused的Activity也是有可能会被系统清掉,不过相对来说,它已经是处于一个比较安全的位置了。

  5.最安全应该就是那个foreground activity了,不到迫不得已它是不会被清掉的。这种process不仅包括resume之后的activity,也包括那些onReceiveIntent之后的IntentReceiver实例。

  在Android Application的生命周期的讨论中,文档也提到了一些需要注意的事项:因为Android应用程序的生存期并不是由应用本身直接控制的,而是由 Android系统平台进行管理的,所以,对于我们开发者而言,需要了解不同的组件Activity、Service和IntentReceiver的生命,切记的是:如果组件的选择不当,很有可能系统会杀掉一个正在进行重要工作的进程。

  下一步要了解的应该是Intent和它的IntentReceiver了,改天继续。

更多相关文章

  1. 获得Android Linux系统增删文件的权限
  2. android 文件系统(
  3. android调用系统功能
  4. android 7.0 系统关闭彩信过CTA测试的方法
  5. Android基于CGroup的memory子系统HAL层分析-lmkd
  6. Android的Camera系统结构
  7. Android系统移植与调试之------->Android Make分析

随机推荐

  1. android ndk 环境搭建及基本编程思路
  2. Android - 向服务器发送数据(POST) - HTT
  3. 据说年薪30万的Android程序员必须知道事
  4. ScrollView can host only one direct ch
  5. Android JNI(实现自己的JNI_OnLoad函数)
  6. Android Framework入门介绍
  7. Animations使用 (四)
  8. Android(安卓)日期和时间的使用实例详解
  9. Android(安卓)GestureDetector手势识别类
  10. android桌面快捷方式创建无标题文章