转载地址: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了,改天继续。
分享到:
相关推荐
个人编写Android进程管理器源代码,可完美运行
一个简单的android进程管理软件,适合初学者研究
Android进程 Android内存策略 Android虚拟机Dalvik Android与linux相比 进程间通讯
这个PPT讲Android应用程序进程的启动和回收,主要涉及到Zygote进程、System Server进程,以及组件管理服务ActivityManagerService、窗口服务WindowManagerService,还有专用驱动Low Memory Killer。通过了解Android...
Android进程管理器.pdf
NULL 博文链接:https://2528.iteye.com/blog/1056413
Android进程管理机制及优化forHTCHeRO.pdf
1 杀进程释放的内存大小是可能为负数, 原因是求出两次(释放前后)内存总数相减 2 android 4.0 应用内存,cup显示问题 原因 解析 top 命令返回的字符串时是按照2.x 版本计算的,没有涉及4.0版本的,简单修改一下...
本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建。本文适合Android平台的应用程序开发者,也适合对于Android系统内部实现感兴趣的读者。Android系统以Linux内核为基础,所以对于进程的管理自然离不...
android 的进程管理 --只包括获取进程和杀死进程
Android进程管理机制及优化_for_HTC[整理].pdf
Android文件管理器(增加了文件夹复制移动,下载资源暂停删除等,以及复制过程中的可视化进程)是一个基于Android开发的应用,包含常用文件操作以及文件下载功能,文件操作包括打开文件夹和打开各类的文件(apk、avi...
对后台运行的进程进行管理,可对某个进程进行查看程序详情、杀死进程、打开程序操作 2. 应用管理 对手机全部应用进行管理 3. 系统资源监控 可以实时查看手机运行时的CPU利用率、内存利用率、已使用内存、可用内存、...
android程序管理代码,简单实现程序管理,可以查看、卸载安装的程序,一键停止正在运行的进程
android项目之aidl跨进程调用举例Demo,开发aidl跨进程调用,主要分以下步骤: 1. 创建.aidl文件-该文件(YourInterface.aidl)定义了客户端可用的方法和数据的接口。 2. 在makefile文件中加入.aidl文件-(Eclipse...
Android项目实战--手机卫士29--杀死后台进程
这是本人2011的自己做的毕业设计,里面包含了所有毕业设计的文档,包括: 1.封面扉页; 2.开题报告; 3.论文正文+附录; 4.任务书; 5.英文翻译封面;...另外还有大部分源代码,该毕业设计花费了我几个月的心血,本来想...
直接加载到虚拟机上就可以运行。可以对进程进行全杀,或者单杀。另外还包括服务,文件管理,程序管理等等。。
最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程。 在Android平台下,结束进程的方法还是比较多的。首先指明,此处的“结束进程”,包含了结束自身进程和结束其他进程两个...