安卓“逼近”内存究竟发生了什么

安卓“逼近”内存究竟发生了什么

问题描述:

我的应用程序中有很少的服务。应用程序正在“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。