如何理解安卓里面的进程和线程和服务

这里用通俗易懂的方式来解释,旨在理解,可能会有细节的错误。

当我们启动一个程序的时候,会先启动一个这个程序的进程,这个进程一般是用来给这个程序首先分配内存用的,因此进程启动不能确定程序正在运行消耗cpu,只是确定有一部分内存被画出来给这个程序。因此,我们也不能通过看开发者里面是否存在某软件的进程来判断这个软件是否在后台消耗cpu!每个程序的进程相互独立,互不影响。

而线程是属于进程里面的,一个进程里面可以有多个线程,这里可以将线程理解为一个程序的各个子函数,这些子函数共享各个变量,因此,进程没了线程也就没了,而线程没了进程可以依然存在,但线程没了会影响整个软件的功能!

下面介绍服务,服务的作用是保证一个进程可以后台运行。安卓的规则规定当一个进程被滑倒后台,会自动切断与cpu的联系并转为缓存的进程,此时为了保证一个进程被滑倒后台依然能够活跃,于是有个服务,服务能够保证这个进程在后台运行,因此我们在开发者选项中看到的服务都是在实时运行的程序!然而,值得注意的是,我们在开发者选项的正在运行的服务中会看到不含服务只存在进程的程序,虽然他们不带服务但他们此时也在后台运行,这是因为手机厂商会在自家系统的调度中将某些重要的软件放进白名单,使他们就算不含服务也可以在后台运行,比如Apple Music以及一些系统程序就没有服务只有进程但依然在后台持续存在。此外,类似百度网盘一类的软件会有其他操作来实现在不使用服务的方式来保持后台。其实,看一个程序有没有在后台运行,只需看他在不在开发者选项的正在运行的服务中,只要在,不管他含不含服务,一定在后台运行。

这里需要注意,并不是在后台运行的程序一定耗电,最主要还得看它是不是在占用cpu,比如Apple Music没在播放音乐时虽然也在正在运行的服务列表中,但没有占用cpu,因此不耗电。

总而言之,这里我想表达的就是缓存的应用一定不耗电,正在运行的服务列表中的程序且含有服务的一定是在后台运行,但不一定耗电。正在运行的服务列表中的程序但不含有服务的一定也是在后台运行,但不一定耗电。耗不耗电还得看cpu的占用情况。

另外解释下手机厂商在系统设置中设置的不允许软件在后台运行,就是只要软件滑倒后台,立马进入缓存切掉与cpu的联系。而允许后台,则是软件滑倒后台,始终不会进入缓存。而智能后台就是根据软件行为或者软件种类(比如白名单里的微信)来动态判断是否进入缓存,比如在播放音乐在下载时就保留,其余时间进入缓存。大部分应用可以用智能后台,但一些流氓软件还是手动设置不允许吧。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值