android“强制关闭”内存究竟发生了什么

时间:2013-02-20 15:51:20

标签: android memory service heap forceclose

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

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

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

您是否知道这些服务创建的对象,静态变量和线程会发生什么? android是否擦除了这个应用程序的所有内存堆?

3 个答案:

答案 0 :(得分:1)

强制停止将终止运行应用程序的VM(虚拟机)。所有对象,服务和活动都被杀死。

答案 1 :(得分:1)

这取决于您是如何开始服务的。

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

使用startService()时,您的服务生命周期会在原始活动关闭时保留。

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

答案 2 :(得分:0)

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

[PS]

  • 如果您故意创建低记忆杀手情况。 我建议您按照我的申请使用。 http://kyorohiro.blogspot.jp/2013/02/inside-kyorostress-1-produce-low-memory.html

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

  • 如果PF重启您的流程。然后调用onCreate()。

  • 服务生命周期由onStartCommand的返回值更改操作。检查android api引用。