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

更多相关文章

  1. Android核心模块内容概述
  2. 通过网络使用ADB ( Connect to android with ADB over TCP )
  3. Android开发艺术探索读书笔记(第二章)
  4. android笔试题
  5. Android开发面试经——2.常见Android基础笔试题
  6. Android(安卓)是什么
  7. Android(安卓)进程管理
  8. android SystemClock设置系统时间需要system权限
  9. Android(安卓)Studio使用说明

随机推荐

  1. Android一个简易的登录界面
  2. Android Spinner列表选择框的应用
  3. Android开发视频教程-深入浅出系列Lesson
  4. android-短信发送器
  5. [android]关于开发无触摸屏(智能电视)的a
  6. android 常用命令
  7. Android 结束通话--实现黑名单拦截
  8. Android 历史版本总结
  9. Android(安卓)录音,加权限还有错误:java.la
  10. 活用Android的Message Queue(2)