我的应用程序中的服务很少。应用程序正在“android.uid.system”进程中运行。当我点击“强制关闭”时,日志会显示:
强制停止包com.sec.ims.android uid = 1000 强制停止服务ServiceRecord {42b9a948 ... .....
我看到在我的应用程序下运行的每个服务。根本没有onDestroy()调用。我想知道在“强制关闭”之后android究竟在做什么?停止整个过程或只停止所有服务,在应用程序下工作的活动?
您是否知道这些服务创建的对象,静态变量和线程会发生什么? android是否擦除了这个应用程序的所有内存堆?
答案 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()。