释放前台服务活动的内存

3
我有一个带前台服务和一个活动的应用程序。该服务可以在启动时自行启动,也可以从活动内部启动。我注意到当服务在启动时自行启动时,内存使用量约为3 MB。一旦我打开该活动,内存使用量就会跳到约9 MB左右。一旦活动被打开(然后通过返回或主页按钮关闭),即使经过多个小时和其他应用程序的打开,内存也永远不会降回到3 MB。我的问题是,活动中的内存是否应该被释放,还是这是前台服务的预期现象?

你已经尝试过真正杀死应用程序了吗?您可以在开发人员设置中启用它,然后按住返回按钮,直到显示一个提示说应用程序已被杀死。 - Scoup
2个回答

2

事实证明,只有在整个进程重新启动之前,Android才会释放活动内存。由于这是一个前台服务,因此其进程几乎永远不会被终止,因此不会发生这种情况。

解决方法是通过指定将服务和活动运行在它们自己的进程中:

android:process="name"

在 AndroidManifest.xml 中


0

您可以使用System.exit(0)终止进程。它将仅以前台运行重新启动,因此使用的内存较少。但是,在系统重新启动之前,您的前台服务将在短时间内停止运行。

然而,仅仅因为这样做是可行的,并不意味着应该这样做。当Android需要内存时,它会自动执行相同的操作。因此,您不必担心增加的内存消耗。内存将在需要时被回收。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接