0

我创建了一个创建后台服务的应用程序。当我关闭应用程序时,服务正在运行,当我返回以将其“绑定”(bindService)以进行通信时。

问题是当我关闭应用程序并重新进入时,它会显着增加正在使用的内存。花费 20Mb -> 24Mb,如果我出去又来 24Mb -> 28Mb,28Mb -> 30Mb ... 这样就破坏了应用程序。我没有位图。如果足够使用静态数组,但我已经测试过并且不是问题的根源。

当我完全关闭应用程序(包括服务)调用 System.exit(0) 并清理所有内存时,当然,我可以在服务关闭时继续运行时调用。我尝试调用垃圾收集器 (System.gc()),如果我注意到内存减少关闭,但是当您再次打开应用程序时,相同的内存会增加。

我将非常感谢您的帮助,再见!

4

1 回答 1

1

考虑到我们掌握的信息,我怀疑问题是活动泄漏。你能检查两件事吗:

  1. 仔细检查你是否使用可以存储的Activity Context(引用Activity)?特别是在服务方面。
  2. 尝试做一个实验——在开发者设置中选择“不保留活动”——每次活动启动后内存会减少吗?
于 2012-09-02T13:58:41.463 回答