我有一个服务在与我的应用程序相同的过程中运行.
有时Android操作系统决定终止我的服务(可能是由于内存不足).
我的问题是:我的应用程序是否与服务一起被杀?或者它是如何工作的?
谢谢!
hac*_*bod 35
首先请务必阅读:http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle
关键是,在Android上,进程只是代码的容器 - 或者特别是一个或多个组件(活动,服务,接收器,提供者).默认情况下,.apk中的所有组件都有自己的专用进程,它们都在一起运行.这几乎总是你想要的.
当用户直接与该进程的组件(即活动)进行交互时,Android将非常努力地保持该进程的运行,除非在特殊情况下,否则您不会看到它被杀死.
当用户不再直接与流程交互时,相对于参考文档中描述的其他流程,它变得可消耗.也就是说,在进行用户一直使用的活动的进程之前,将清空空进程(没有有趣的组件),这些进程将在运行服务的进程之前被终止.因此,拥有正在运行的服务将倾向于以牺牲其他流程为代价来保持您的流程.
与此同时,我们需要妥善处理越来越多的应用程序,这些应用程序通常会无限期地运行服务,并且通常会出现内存泄漏.因此,服务运行的时间越来越长,Android将越来越难以保持其流程.实际上,这意味着将其向下移动到后台存储桶,直到内存消除器将其取出.之后,如果服务仍然想要运行,那么将创建一个新进程以使其重新启动.
结果是,对于长时间运行的正常服务,预计他们的进程会在一段时间后被杀死.这不需要停止服务; 想要继续运行的服务将会这样做,它只需要在新进程中实例化.
当然,只要用户与您的流程中的某个活动进行交互,该流程就不会被终止,因为无论其中的任何服务是什么,它都会将其拉到前台类别.
| 归档时间: |
|
| 查看次数: |
16870 次 |
| 最近记录: |