【问题标题】:Releasing memory from activity of foreground service从前台服务的活动中释放内存
【发布时间】:2014-03-20 15:59:40
【问题描述】:

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

我的问题是,应该释放 Activity 的内存还是使用前台服务?

【问题讨论】:

  • 是否已经尝试真正杀死该应用程序?您在开发人员设置中启用它并按住后退按钮,直到显示表示应用程序已终止的 toast。

标签: android service android-activity foreground


【解决方案1】:

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

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

android:process="name"

在 AndroidManifest.xml 中

【讨论】:

    【解决方案2】:

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

    但是,仅仅因为可以做到这一点并不意味着就应该这样做。当android需要内存时,它会自动做同样的事情。所以你不应该担心增加的内存消耗。内存将在需要时被回收。

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2017-01-08
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多