- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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绑
您可能关注的文档
- ok正方教务系统及相关操作功能简介.ppt-教师教学发展中心网.ppt
- OMX图片添加BAR及DV文件导出TIFF说明.doc.doc
- OOAD_09第9章类别图与物件图.ppt
- OPACWEB2.0产品说明MELINETSOPACWEB2.0产品说明北京创讯.doc
- OPCand.NET九思易自动化软件ControlEaseAutomationSoftware.ppt
- OPTIMA2100DV用户操作培训-仪器信息网.ppt
- Optimizer优化器入门-Read.ppt
- OptionField(非必要性栏位).ppt
- Oracle体系结构.ppt.ppt
- OracleAS10gFormService和ReportService安装配置简介.doc.doc
最近下载
- 2024年13起典型火灾案例及消防安全知识专题培训.pptx
- 2024届高考语文复习:+深度分析材料内涵,扣住情境任务写作+课件22张.pptx VIP
- GBT1037-2021 塑料薄膜与薄片水蒸气透过性能测定 杯式增重与减重法.pdf
- 建筑机电工程抗震支架设计规范GB50981-2014.pdf
- SH∕T 3022-2019 石油化工设备和管道涂料防腐蚀设计标准.pdf
- 初中数学知识点(苏教版).doc VIP
- 浅谈我国个人所得税改革对工薪阶层的影响.docx
- 物资采购领域廉洁风险防控建设重要性及对策建议思考.docx
- “三级”安全教育培训记录.docx
- 2021年全国新高考I卷语文试题.doc VIP
文档评论(0)