开发学院手机开发Android 开发 Android SDK 开发之应用程序基础 阅读

Android SDK 开发之应用程序基础

 2010-03-23 04:53:00 来源:WEB开发网   
核心提示:前台进程来是用户界面能够响应,一个可见进程为一个没有任何前台component但仍然能影响用户在屏幕上看到的内容的进程,Android SDK 开发之应用程序基础(19),一个进程满足下列任一条件则被认为是可见进程:它持有一个activity,该activity不在前台,无论该activity发生了什么,就像前面所说的
前台进程来是用户界面能够响应。

一个可见进程为一个没有任何前台component但仍然能影响用户在屏幕上看到的内容的进程。一个进程满足下列任一条件则被认为是可见进程:

它持有一个activity,该activity不在前台,但仍对用户可见(它的onPause()方法被调用)。例如,一个前台activity为一个对话框,覆盖了后面一个activity。

它持有一个绑定到可见activity的service。

一个可见进程被认为非常重要,只有在需要资源来让所有前台进程运行时才会被Kill掉。

一个服务进程是一个运行着使用startService()启动的service但并非前两种类型的进程。虽然服务进程并非直接和用户看见的东西绑定,它们一般来说正在进行用户关心的操作(例如在后台播放音乐或者下载网络数据),因此系统一般会让它们保持运行状态。

一个后台进程是一个持有一个对用户不可见的activity的进程(Activity的onStop()方法被调用)。这些进程对用户体验没有直接影响,并且可以在任意时间被Kill以保证内存的需要。一般来说有很多后台进程在运行,因此它们被保存在一个LRU列表中来保证最近使用的拥有该activity的进程是最后 kill的进程。如果一个activity正确的实现了它的生命周期方法,并保存了它的当前状态,kill该process将不会对用户体验造成不好的影响。

一个空进程未包含任何活动component的进程。保存这样一个进程的唯一原因就是用来提高下一次运行的速度。为了平衡系统资源,系统常常会清理掉这些进程。

Android将一个进程排在尽可能高的级别,基于其component的重要程度。例如,如果一个进程持有一个service和一个可见的activity,该process将被作为一个可见进程来排序,而不是一个服务进程。

另外,一个进程的排序可能因为其它进程对它的依赖性而上升。一个进程的优先级永远不低于它服务于的进程。例如,如果进程A中的一个content provider服务于进程B中的一个客户,或者如果进程A中的一个service绑定到进程B中的一个component,则A至少和B一样重要。

由于正在运行一个服务的进程比拥有后台activity的进程排序低,因此一个启动一个长期运行的操作的activity可能会启动一个service来做这项工作,而不是启动一个线程——特别是如果该操作会比activity持续的更久的时候。例如播放背景音乐,上传照片等等。使用一个service保证了改操作将至少拥有服务进程的优先级,无论该activity发生了什么。就像前面所说的broadcast receiver生命周期一样,这也是broadcast receiver应该使用service而不是线程来进行耗时操作的原因。


上一页  14 15 16 17 18 19 

Tags:Android SDK 开发

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接