Android翻译:应用程序的生命周期 kill进程

本文介绍了Android应用程序的生命周期管理方式,包括系统如何根据组件状态决定进程的重要性级别,以及不当使用组件可能导致的问题。阐述了不同类型的进程及其重要性层级,帮助开发者理解如何避免因内存管理不当导致的应用终止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                          Android翻译:应用程序的生命周期

原文出处:http://code.google.com/android/intro/lifecycle.html
       在多数情况下,所有的Android应用程序运行在它们各自的Linux进程中。当这些代码需要被运行时,这些应用程序的进程就被创建,直至这些应用程序运行结束才被释放,或者系统需要为其他需要内存的程序才去释放它们占用的内存资源。

       Android一个非常重要,而不同寻常的特点就在于它对生命周期的控制。Android生命周期的控制并不是直接由应用程序本身来控制,而是由系统通过 与应用程序部分的联合来控制的。这样系统就可以知道那些应用程序在运行,那些对用户来说更加重要,以及目前系统的可用内存是多大。

       对于开发者而言理解各种不同的应用程序组件(特别是Activity, Service, and IntentReceiver)他们在应用程序进程的生命周期中所起到的不同作用是很重要的。如果是在执行一项非常重要的工作,一个使用不当的应用组件会 直接导致系统kill掉该应用的进程。

      关于进程生命周期的bug的一个最普遍的例子就是当IntentReceiver通过onReceiveIntent()方法接受到一个intent时候 启动了一个线程,并从该函数返回。一旦返回系统就认为IntentReceiver已经处于非活跃状态,因此它所占有的进程将不再需要(除非有其他应用程 序此时又激活了他)这样系统将在任意时候销毁他的进程并释放所占内存,中止目前尚在运行的线程。这个问题的解决办法就是从 IntentReceiver启动一个Service服务,这样系统就会知道当前仍有工作在进程中进行。

       在内存降低的时候决定哪些进程被Kill掉,Android的方法就是将所有进程放入一个基于组件的运行与状态的”重要性层级”中。以下就是重要性的排序:

1.foreground process(显著进程)持有一个用户正在交互的屏幕顶层的Activity (他的onResume() 方法被调用),或者一个目前正在运行的 IntentReceiver (他的its onReceiveIntent() 方法正在执行)。系统中这样的进程并不多,一般情况下仅在内存已被耗尽不足以维持进程运行的时候作为万不得已而被Kill掉。通常这个时候设备已经到了存 储器页面调整状态,因此这时kill是为了保证用户界面的响应而不得已要做的。


2.visible process(可见进程)持有一个用户在屏幕上可见的但并不是最显著位置的Activity (他的onPause() 方法被调用)例如,如果显著进程作为一个对话框被显示并允许前面的activity显示在其后面,这样的进程会被认为相当重要而不可以kill掉,除非能 保证前面的显著进程可以运行


3.service process(服务进程)持有一个已经通过startService() 方法启动的Service,尽管这些进程并不被用户直接看到,但他同样在处理一些用户很关心的事情,比如Mp3在后台的播放,已经文件的上传下载。所以系统 会一直保持这些进程的运行,除非内存已无法维持显著进程与可见进程的运行。


4.background process(后台进程) 持有一个用户已不可见的Activity onStop() 方法已被调用。这些进程对用户体验来说没有直接的影响,只要他们正确的执行activity的生命周期。系统会在任意时刻kill掉这类进程并释放内存给 前面三类进程。通常系统中这类进程会很多,他们会保存在LRU列表中,当系统内存降低时用户最近访问的的进程将最后被kill掉。


5.empty process(空进程)不包含任何应用程序组件。保留这些进程的作用其实是为了充当缓存,提高应用程序下一次启动的速度。因此系统会进程kill掉这类进程用于平衡整个系统在缓存进程和潜在的核心缓存之间的资源。

http://hi.baidu.com/roooy/blog/item/575de1358fcda51590ef3930.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值