ProcessesandThreads译者署名呆呆大虾译者微博httpweibo.doc

ProcessesandThreads译者署名呆呆大虾译者微博httpweibo.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ProcessesandThreads译者署名呆呆大虾译者微博httpweibo.doc

Processes and Threads 译者署名: 呆呆大虾 译者微博:  HYPERLINK /popapa /popapa 版本:Android 3.2 r1 快速查看 默认情况下,每个应用程序运行在各自的进程中,应用程序中的所有组件也都运行在其中。 activity中所有运行缓慢的、阻塞的操作都应该运行在新建的线程中,以免减缓用户界面运行速度。 在本文中 HYPERLINK \l Process进程 HYPERLINK \l Process_life进程的生命周期 HYPERLINK \l Thread线程  HYPERLINK \l worker_thread 工作线程 HYPERLINK \l Thread_safe_method线程安全的方法 HYPERLINK \l Interprocess_Communication进程间通讯 进程和线程 如果某个应用程序组件是第一次被启动,且这时应用程序也没有其他组件在运行,则Android系统会为应用程序创建一个包含单个线程的linux进程。默认情况下,同一个应用程序的所有组件都运行在同一个进程和线程里(叫做“main”主线程)。如果组件启动时,已经存在应用程序的进程了(因为应用程序的其它组件已经在运行了),则此组件会在已有的进程和线程中启动运行。不过,可以指定组件运行在其他进程里,也可以为任何进程创建额外的线程。 本文讨论进程和线程是如何在Android应用程序中发挥作用的。 进程 默认情况下,同一个应用程序内的所有组件都是运行在同一个进程中的,大部分应用程序也不会去改变它。不过,如果需要指定某个特定组件所属的进程,则可以利用manifest 文件来达到目的。 manifest文件中的每种组件元素—— HYPERLINK /guide/topics/manifest/activity-element.html activity、  HYPERLINK /guide/topics/manifest/service-element.html service、  HYPERLINK /guide/topics/manifest/receiver-element.html receiver和 HYPERLINK /guide/topics/manifest/provider-element.html provider——都支持定义android:process属性,用于指定组件运行的进程。设置此属性即可实现每个组件在各自的进程中??行,或者某几个组件共享一个进程而其它组件运行于独立的进程。设置此属性也可以让不同应用程序的组件运行在同一个进程中——实现多个应用程序共享同一个Linux用户ID、赋予同样的权限。  HYPERLINK /guide/topics/manifest/application-element.html application元素也支持android:process属性,用于指定所有组件的默认进程。 如果内存不足,可又有其它为用户提供更紧急服务的进程需要更多内存,Android可能会决定关闭一个进程。在此进程中运行着的应用程序组件也会因此被销毁。当需要再次工作时,会为这些组件重新创建一个进程。 在决定关闭哪个进程的时候,Android系统会权衡它们相对用户的重要程度。比如,相对于一个拥有可见activity的进程,更有可能去关闭一个activity已经在屏幕上看不见的进程。也就是说,是否终止一个进程,取决于运行在此进程中组件的状态。终止进程的判定规则将在后续内容中讨论。 进程的生命周期 Android系统试图尽可能长时间地保持应用程序进程,但为了新建或者运行更加重要的进程,总是需要清除过时进程来回收内存。为了决定保留或终止哪个进程,根据进程内运行的组件及这些组件的状态,系统把每个进程都划入一个“重要性层次结构”中。重要性最低的进程首先会被清除,然后是下一个最低的,依此类推,这都是回收系统资源所必需的。 重要性层次结构共有5级,以下列表按照重要程度列出了各类进程(第一类进程是最重要的,将最后一个被终止): 1. 前台进程 用户当前操作所必须的进程。满足以下任一条件时,进程被视作处于前台: 其中运行着正与用户交互的 HYPERLINK /reference/android/app/Activity.html Activity(Activity对象的 HYPERLINK /reference/android/app/Activity.html \l onResume%28%29onResume() 方法已被调用)。 其中运行着被正与用户交互的activity绑

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档