博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程和线程
阅读量:5842 次
发布时间:2019-06-18

本文共 1045 字,大约阅读时间需要 3 分钟。

进程和线程

当一个应用组件启动并且该程序没有其他组件在运行时,Android系统会启动一个单线程的进程来运行这个程序。默认情况下,一个应用程序的所有组件都运行在同一个进程和线程中(通常叫做主线程Main Thread)。如果一个组件启动时,该应用程序已经有组件在运行了,那么这个组件将和已经运行的组件在同一个进程内部运行。当然,你也可以用独立的进程来运行不同的组件,也可以在任意进程中创建新的线程。

进程

 默认情况下,同一个应用程序的所有组件应该运行在同一个进程中,大部分的应用程序都不应该改变这种模式。除非你觉得你真的有必要自己控制你的组件应该属于哪个进程时,你可以在清单文件(manifest file)中来实现。

在清单文件中,每一个组件的入口都支持android:process属性来指定你的组件应该在哪个进程中运行。通过设置这个属性,你可以让同一个应用程序的一些组件在不同的进程中运行,而另外一些还是公用一个进程。当然,你也可以通过设置这个属性来实现让不同应用程序的组件运行在相同的进程中。

<application>元素也支持支持android:process属性,设置这个属性会作为其下所有组件的默认值。

当系统中的内存不够用,而又有其他进程需要为用户服务而请求内存时,android会关闭一个进程来释放内存。在这个进程中运行的应用程序组件也因此消亡了,当有新的任务需要执行时就会启动新的进程来运行这些组件。

系统根据进程相对于用户的重要性来决定杀死哪个进程。比如系统会优先杀死那些运行后台活动的进程,而不是那些运行可见活动的进程。因此,一个进程是否会被关闭,取决运行于其中的组件。下面讨论在选择要杀死的进程时遵循的规则。

进程的生命周期

Android系统试图保留一个进程越长越好,但是在需要释放内存给更重要的进程时,也会去清理就的进程。怎样去哪个进程该保留哪个进程该关闭呢?系统根据运行在进程中的组件以及这些组件的状态,给每一个进程定义了一个重要层级。重要层级最低的最先被关闭,次低级的随后,以此类推,以至有必要的时候回收系统资源。

共有五个重要层级,下面根据重要性从高到低列出了不同进程:

  1. 前台进程
  2. 可见进程
  3. 服务进程
  4. 后台进程
  5. 空进程

线程

 当一个应用程序被加载的时候,系统创建一个线程来执行这个应用程序,被称作“主线程”。

 

转载于:https://www.cnblogs.com/MichaelGuan/archive/2011/10/12/2209447.html

你可能感兴趣的文章
Spring的注解配置与XML配置之间的比较
查看>>
2014手机分析图
查看>>
Linux PID 1 和 Systemd
查看>>
一元多项式相加
查看>>
commandLink/commandButton/ajax backing bean action/listener method not invoked (转)
查看>>
js计算时间差,包括计算,天,时,分,秒
查看>>
使用rsync在windows(服务端)与linux(客户端)之间同步
查看>>
软件工作的大环境
查看>>
vs2013中,自定义mvc 添加视图脚手架
查看>>
移动端Web开发调试之Chrome远程调试(Remote Debugging)
查看>>
Eclipse插件开发中的选择监听机制(Selection Provider-Listener)
查看>>
Java类加载过程及static详解
查看>>
background-color和background-image相关细节
查看>>
如何学好C#
查看>>
梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦
查看>>
Word中如何设置图片与段落的间距为半行
查看>>
Firefox about
查看>>
Angular - - angular.element
查看>>
美图秀秀首页界面按钮设计(二)
查看>>
nginx安装及负载均衡配置
查看>>