Android的进程与线程(1)

当程序的一个组件启动的时候,如果这时程序中没有其他组件正在运行的话,Android系统将会为这个程序启动一个进程和一个线程。默认情况下,同一个程序中的所有组件运行在相同的进程和线程中(该线程被称为main线程)。如果当一个程序的组件启动的时候,该程序已经有一个进程的话(这种情况可能是因为程序的其他的某个组件已经运行了),程序的该组件就会在这个已经存在的进程中被启动,并且运行在同一个线程(即main线程)中。当然,你也可以让同一程序中的不同组件分别运行在不同的进程中,并且你可以为这些进程分别创建各自的线程。

本篇教程将主要介绍在Android程序中的进程和线程具体是怎样工作的。

进程

默认情况下,同一个程序的所有组件运行在同一个进程中,对于大多数的程序来说,这一点最好是不要改变的。然而,如果你发现你需要控制某个组件运行于特定进程的话,你可以在manifest文件中通过android:process属性来设定。

manifest文件中,<activity><service><receiver><provider>这四种组件标签都支持android:process属性,这个android:process属性就是用来决定这四种组件应该运行在哪个进程中的。你可以通过设置这个属性来让每个组件运行在自己的进程中,或者让一些组件运行在同一个进程中其他的运行在另外的进程中。你甚至可以通过设置android:process来让不同程序的组件运行在同一个进程中,当然这有个前提就是这些不同程序应该有相同的Linux用户ID并且签订了同一证书(sign with the same cerificates)。

manifest中的<application>标签中,也可以设置android:process属性,这样的话就会让程序中的所有组件都运行在同一进程中。

Android设备内存资源很少,而当前与用户交互的进程又需要更多的内存资源的时候,Android系统可能就会杀死一些进程。运行在被杀死进程中的程序组件也就同时被销毁了。当用户再次用到这些组件的时候,系统就会这些组件再启动新的进程。

当系统资源紧张,系统决定要杀死某些进程的时候,是根据这些进程与用户的相关性来判断的。比如说,与可见activities所在的进程相比,系统更容易杀死那些不可见activities所在的进程。所以说来,系统决定杀死哪个进程的时候,主要是根据进程中运行的组件的状态来判断的。关于这一点,下篇将进一步讨论。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值