转载地址: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进程管理机制的实例。下面我们将深入探讨Android中的进程管理和相关知识点。 一、Android进程生命周期 在Android中,每个应用程序都被视为...
总之,Android进程管理是优化应用性能的重要一环,理解其机制并根据设备特性进行定制优化,能够提升用户体验,减少系统资源的浪费。通过持续学习和实践,开发者可以更好地驾驭这一机制,为用户提供更高效、更流畅的...
Android进程 Android内存策略 Android虚拟机Dalvik Android与linux相比 进程间通讯
Android进程管理源码
Android进程注入是一种技术,它允许一个应用程序在另一个应用程序的进程中运行其代码,通常是出于调试、监控或增强功能的目的。在Android系统中,由于其安全模型,这种操作需要深入理解操作系统的工作原理以及相应的...
Android进程管理器是一个用于监控和管理在Android操作系统上运行进程的应用程序。它对于开发者来说是一个非常重要的工具,因为它可以帮助开发者了解系统中各个进程的状态,包括它们的内存使用情况、进程优先级、是否...
这个PPT讲Android应用程序进程的启动和回收,主要涉及到Zygote进程、System Server进程,以及组件管理服务ActivityManagerService、窗口服务WindowManagerService,还有专用驱动Low Memory Killer。通过了解Android...
首先,我们要了解Android进程的概念。在Android中,每个应用都运行在自己的进程中,默认情况下,只有同一应用内的组件才能互相通信。但有时,我们需要一个应用与另一个应用进行交互,这就需要用到IPC。 AIDL是...
本文将深入探讨Android进程保活的原理、方法以及实现策略。 首先,理解Android系统的进程管理机制是至关重要的。Android系统根据进程的重要性将其分为五种级别:前台进程、可见进程、服务进程、后台进程和空进程。...
- 关注系统更新和厂商定制,因为不同版本和设备的进程管理策略可能存在差异。 总之,理解Android进程的优先级和回收策略是提高应用稳定性的关键。开发者应当合理运用保活技术,同时注意保持良好的用户体验和遵循...
Android进程管理工具源代码
下面,我们将深入探讨Android进程管理的关键概念、机制以及如何进行进程控制。 一、Android进程生命周期 Android中的进程分为五种状态:空闲(Zombie)、可驻留(Empty)、运行(Running)、可暂停(Paused)和停止...
在Android操作系统中,进程管理是系统资源调度的关键部分。Android会根据系统资源需求和应用的活跃状态来决定哪些进程应该保留在内存中,哪些进程应该被杀死以释放资源。然而,有时开发者或用户可能希望某些应用程序...
Android的进程管理机制是其操作系统核心的一部分,旨在优化资源分配,确保用户能流畅地使用各种应用程序。在HTC HeRO以及其他Android设备上,这一机制尤其重要,因为它直接影响到用户体验和系统性能。 首先,...
Android进程是资源分配和调度的基本单位,每个应用都有自己的进程,它们之间是相互隔离的。在不同的进程中运行的组件,即使位于同一应用,也无法直接访问彼此的数据,除非通过特定的通信方式如Binder机制。 创建多...
在Android系统中,进程保活是一项重要的技术,尤其是在开发长期运行的服务或者后台应用时。...通过深入研究和实践这个Demo,我们可以更好地理解Android进程管理和保活技巧,为开发出更加健壮和用户友好的应用打下基础。
在Android系统中,进程间通信(IPC,Inter-Process Communication)是实现不同应用程序之间数据交换的关键技术。AIDL(Android Interface Definition Language)是Android提供的一种强大的工具,它使得跨进程调用...
本文将详细介绍如何利用Android提供的API来获取系统进程信息,并展示一个简易进程管理器的实现过程。 #### 一、基础知识准备 在开始之前,我们需要了解以下概念: 1. **ActivityManager**:它是Android系统提供的...
这个过程涉及到跨进程的数据序列化和反序列化,以及权限管理等复杂操作,但开发者无需关心这些底层细节。 6. 注意事项 - 由于进程间通信涉及到安全问题,因此在调用服务时,需要确保客户端具有足够的权限。 - IPC...