1

在我的 android 应用程序中,我使用了一个前台服务,该服务正在生成一个线程作为工作人员。有时我观察到应用程序被终止,但线程仍在尝试引用一些不再可用的值。

android 可以决定终止我的应用程序而使服务仍在运行吗?

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

4

1 回答 1

1

Android 中的所有应用程序都作为类似于 linux 进程的单独进程运行。因此,如果您的服务在单独的进程中运行,那么 Android 可能会决定在某个时候关闭某个进程,此时内存不足且其他进程需要更直接地为用户提供服务。在被杀死的进程中运行的应用程序组件因此被破坏。当这些组件再次有工作要做时,将再次为这些组件启动一个流程。

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

您还可以通过使用清单中的 android:process 属性来控制您的服务是否可以在与您的应用程序相同的进程中运行或在单独的进程中运行。

有关更多信息,您可以在以下链接中阅读有关进程和线程的信息:

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

于 2013-03-25T14:41:39.630 回答