我有一个带前台服务和一个活动的应用程序。该服务可以在启动时自行启动,也可以从活动内部启动。我注意到当服务在启动时自行启动时,内存使用量约为3 MB。一旦我打开该活动,内存使用量就会跳到约9 MB左右。一旦活动被打开(然后通过返回或主页按钮关闭),即使经过多个小时和其他应用程序的打开,内存也永远不会降回到3 MB。我的问题是,活动中的内存是否应该被释放,还是这是前台服务的预期现象?
事实证明,只有在整个进程重新启动之前,Android才会释放活动内存。由于这是一个前台服务,因此其进程几乎永远不会被终止,因此不会发生这种情况。
解决方法是通过指定将服务和活动运行在它们自己的进程中:
android:process="name"
在 AndroidManifest.xml 中
您可以使用System.exit(0)终止进程。它将仅以前台运行重新启动,因此使用的内存较少。但是,在系统重新启动之前,您的前台服务将在短时间内停止运行。
然而,仅仅因为这样做是可行的,并不意味着应该这样做。当Android需要内存时,它会自动执行相同的操作。因此,您不必担心增加的内存消耗。内存将在需要时被回收。