android进程优先级&有了Thread为什么还要使用service
2014-03-03 20:42
309 查看
我们知道,一般情况下,一个应用程序对应一个进程,当然也有例外,比如在一个应用程序中打开浏览器时,这时就产生了另一个进程,也就是浏览器的进程。这时,当我们关闭了该应用之后,会发现该应用的进程并没有被销毁。实际上,由于这些应用是用于手机上的,用户可能会频繁使用这些应用,谷歌工程师为了提高我们使用这些应用的效率,当我们关闭一个应用时,只是将界面关闭了,并没有将其进程彻底杀死。
这样做固然提高了我们打开应用的速度,但同时也产生了另一个麻烦。想象一下,如果我们打开了几十个应用,而每个应用的进程仍然在后台运行,那么对手机本身将会是非常重的负担,所以,谷歌工程师也考虑到了这个问题。也就有了以下这个概念,进程优先级。
谷歌工程师把进程的优先级分为五种,分别是:前台进程,可见进程,后台进程,服务进程,空进程。
这五个进程按优先级从高到低排序,优先级别越低,就越有可能在手机的内存空间不足的时候被系统回收。
前面我们讲到,如果要执行一个耗时的操作时,往往是在主线中开启一个子线程,然后在子线程中来完成耗时操作,而我们同时知道,服务其实也是为了执行耗时的操作而长时间运行在后台的一组组件,那如此一来,这跟我们在主线程中直接new一个子线程有什么区别呢?
区别其实就在于上面所讲的优先级。
比如我们开发了一个天气预报的应用,这个应用要求每隔一个小时获取当前最新的天气信息,这时我们最好用service来操作,想象一下,如果我们在后台new一个线程,我们知道,线程是运行在进程里的,一旦应用被关闭了,也就是说这个进程变成了空进程,那么就很容易被系统回收,如此我们将不能及时获取到最新的消息了。
这样做固然提高了我们打开应用的速度,但同时也产生了另一个麻烦。想象一下,如果我们打开了几十个应用,而每个应用的进程仍然在后台运行,那么对手机本身将会是非常重的负担,所以,谷歌工程师也考虑到了这个问题。也就有了以下这个概念,进程优先级。
谷歌工程师把进程的优先级分为五种,分别是:前台进程,可见进程,后台进程,服务进程,空进程。
这五个进程按优先级从高到低排序,优先级别越低,就越有可能在手机的内存空间不足的时候被系统回收。
前面我们讲到,如果要执行一个耗时的操作时,往往是在主线中开启一个子线程,然后在子线程中来完成耗时操作,而我们同时知道,服务其实也是为了执行耗时的操作而长时间运行在后台的一组组件,那如此一来,这跟我们在主线程中直接new一个子线程有什么区别呢?
区别其实就在于上面所讲的优先级。
比如我们开发了一个天气预报的应用,这个应用要求每隔一个小时获取当前最新的天气信息,这时我们最好用service来操作,想象一下,如果我们在后台new一个线程,我们知道,线程是运行在进程里的,一旦应用被关闭了,也就是说这个进程变成了空进程,那么就很容易被系统回收,如此我们将不能及时获取到最新的消息了。
相关文章推荐
- [android] 安卓进程优先级&为什么使用服务
- 【黑马Android】(08)activity生命周期/横竖屏切换的生命周期/任务栈的概念/广播接收者ip拨号器/进程的优先级&为什么使用服务
- 为什么使用服务&进程的优先级
- 进程的优先级&为什么使用服务
- 20_进程的优先级&为什么使用服务
- Android开发实践:使用Service还是Thread
- 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护
- Android开发实践:使用Service还是Thread
- 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护 3
- Android开发实践:使用Service还是Thread
- Android中使用"running services"查看service进程内存
- android 进程/线程管理(三)----Thread,Looper / HandlerThread / IntentService
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android开发实践:使用Service还是Thread
- Android四大组件应用系列5——使用AIDL实现跨进程调用Service
- 使用eval转换json对象时为什么外边还要加括号eval("("+data+")");
- Android开发实践:使用Service还是Thread
- Android学习之 如何提高Service的优先级、当系统释放更多内存时、防止Service进程被Kill掉
- android 何时使用Service 何时使用Thread