从前台服务的活动中释放内存

时间:2014-03-20 15:59:40

标签: android service android-activity foreground

我有一个带前台服务和一项活动的应用。该服务可以在启动时自行启动,也可以从活动中启动。我注意到服务在启动时自动启动,内存使用量约为3mB。一旦我打开活动,内存使用量就会上升到大约9mB。一旦活动打开(然后通过后退或主页按钮关闭),即使在数小时和其他应用程序打开后,内存也不会降回到3mB。

我的问题是,是否应该释放活动的内存,或者这是前台服务的预期?

2 个答案:

答案 0 :(得分:1)

事实证明,在重新启动整个过程之前,Android不会从内存中释放活动。由于它是一个前台服务,它的过程几乎从未被杀死,所以这不会发生。

解决方案是通过指定:

在自己的进程中运行服务和活动
android:process="name"
AndroidManifest.xml中的

答案 1 :(得分:0)

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

然而,仅仅因为这可以做到并不意味着它应该完成。当android需要内存时,它会自动执行相同的操作。所以你不应该担心增加的内存消耗。需要时将回收内存。