服务可以比应用程序更长寿

时间:2013-03-25 14:30:50

标签: android android-service

在我的Android应用程序中,我使用的是foreground service,它将一个线程作为一个工人生成。有时候我发现应用程序被杀了但是线程仍然试图引用一些不再可用的值。

android可以决定杀死我的应用程序,让服务仍在运行吗?

我在我的服务的onDestroy()方法中停止线程,因此想知道Android何时杀死应用程序,它是否会调用Service:onDestroy()。

1 个答案:

答案 0 :(得分:1)

Android中的所有应用程序都作为一个类似于linux进程的独立进程运行。因此,如果您的服务在一个单独的进程中运行,那么Android可能会决定在某个时刻关闭进程,此时内存不足并且需要更快立即为用户提供服务的其他进程。因此,在被杀死的进程中运行的应用程序组件将被销毁。当这些组件再次为它们工作时,将再次启动该过程。

在决定要杀死哪些进程时,Android系统会权衡它们对用户的相对重要性。例如,与托管可见活动的进程相比,它更容易关闭托管在屏幕上不再可见的活动的进程。因此,是否终止进程的决定取决于在该进程中运行的组件的状态。下面讨论用于决定终止哪些进程的规则。

如果您的服务可以在与应用程序相同的进程中运行,或者在清单中使用android:process属性在单独的进程中运行,那么您也可以控制它。

更多信息您可以在以下链接上阅读有关流程和主题的信息:

http://developer.android.com/guide/components/processes-and-threads.html