android进程优先级&有了Thread为什么还要使用service
我们知道,一般情况下,一个应用程序对应一个进程,当然也有例外,比如在一个应用程序中打开浏览器时,这时就产生了另一个进程,也就是浏览器的进程。这时,当我们关闭了该应用之后,会发现该应用的进程并没有被销毁。实际上,由于这些应用是用于手机上的,用户可能会频繁使用这些应用,谷歌工程师为了提高我们使用这些应用的效率,当我们关闭一个应用时,只是将界面关闭了,并没有将其进程彻底杀死。
这样做固然提高了我们打开应用的速度,但同时也产生了另一个麻烦。想象一下,如果我们打开了几十个应用,而每个应用的进程仍然在后台运行,那么对手机本身将会是非常重的负担,所以,谷歌工程师也考虑到了这个问题。也就有了以下这个概念,进程优先级。
谷歌工程师把进程的优先级分为五种,分别是:前台进程,可见进程,后台进程,服务进程,空进程。
这五个进程按优先级从高到低排序,优先级别越低,就越有可能在手机的内存空间不足的时候被系统回收。
前面我们讲到,如果要执行一个耗时的操作时,往往是在主线中开启一个子线程,然后在子线程中来完成耗时操作,而我们同时知道,服务其实也是为了执行耗时的操作而长时间运行在后台的一组组件,那如此一来,这跟我们在主线程中直接new一个子线程有什么区别呢?
区别其实就在于上面所讲的优先级。
比如我们开发了一个天气预报的应用,这个应用要求每隔一个小时获取当前最新的天气信息,这时我们最好用service来操作,想象一下,如果我们在后台new一个线程,我们知道,线程是运行在进程里的,一旦应用被关闭了,也就是说这个进程变成了空进程,那么就很容易被系统回收,如此我们将不能及时获取到最新的消息了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。