4

我的应用程序中的服务很少。应用程序在“android.uid.system”进程中运行。当我单击“强制关闭”时,日志会显示:

强制停止包 com.sec.ims.android uid=1000 强制停止服务 ServiceRecord{42b9a948 ... .....

对于在我的应用程序下运行的每个服务,我都看到了这一点。根本没有 onDestroy() 调用。我想知道“强制关闭”之后android到底在做什么?停止整个过程或只是停止在应用程序下工作的所有服务、活动?

你知道这些服务创建的对象、静态变量和线程会发生什么吗?android 是否会清除此应用程序的所有内存堆?

4

3 回答 3

1

A Force Stop will kill the VM (Virtual Machine) in which the application is running. All Objects, Services, and activities are killed.

于 2013-02-20T15:53:18.397 回答
1

这取决于您如何启动该服务。

使用startService()会覆盖由 管理的默认服务生命周期bindService()

使用时,当startService()原始 Activity 关闭时,您的服务生命周期仍然存在。

在这两种情况下,Android 都会在需要内存时停止服务。

于 2013-02-20T15:58:08.910 回答
0

我认为。这个问题是低内存杀手运行问题。当更高优先级的进程需要堆时,Android PF 会杀死活着的进程。

[ps]

  • 如果您故意制造内存不足杀手的情况。我建议您使用以下我的应用程序。 http://kyorohiro.blogspot.jp/2013/02/inside-kyorostress-1-produce-low-memory.html

  • 如果此问题是 Low memory Killer 问题,您的服务和进程将重新启动。但是你的应用程序的数据在java堆中被删除了。

  • 如果 PF 重新启动你的进程。然后调用 onCreate()。

  • 服务生命周期由 onStartCommand 的返回值改变操作。检查android api参考。
于 2013-02-20T16:12:18.060 回答