安卓“逼近”内存究竟发生了什么
问题描述:
我的应用程序中有很少的服务。应用程序正在“android.uid.system”进程中运行。当我点击 “强制关闭”,然后记录说:安卓“逼近”内存究竟发生了什么
强行停止包com.sec.ims.android的uid = 1000 强行停止服务ServiceRecord {42b9a948 ... .....
我见对于在我的应用程序下运行的每个服务。根本没有onDestroy()调用。我想知道在“强制关闭”后,Android究竟做了什么?停止整个过程或停止所有服务,根据应用程序工作的活动?
你知道这些服务创建的对象,静态变量和线程会发生什么吗? Android会删除此应用程序的所有内存堆吗?
答
强制停止会终止运行应用程序的VM(虚拟机)。所有对象,服务和活动都被终止。
答
这取决于您如何开始服务。
使用startService()
覆盖了由bindService()
管理默认的使用寿命。
当使用startService()
时,当原始活动关闭时,您的服务生命周期保持不变。
在这两种情况下,Android都会在需要内存时停止服务。
答
我想。这个问题是低内存杀手运行问题。 当高级优先级进程需要堆时,Android PF已经杀死了活动进程。
[PS]
- ,如果你故意创建低内存杀手情况
。 我建议您使用以下我的应用程序。 http://kyorohiro.blogspot.jp/2013/02/inside-kyorostress-1-produce-low-memory.html
如果这个问题是低内存杀手问题,您的服务和进程将重新启动。但是你的应用程序的数据在java堆中被删除。
如果PF重新启动您的过程。然后调用onCreate()。
- 服务生命周期通过onStartCommand的返回值更改操作。检查android api refernce。