5

我做了一个简单的应用程序来测试Android的内存。它有两个 Activity,A 和 B。A 是一个简单的 Activity,带有一个启动 B 的按钮。B 包含一个非常大的图像(jpg,mdpi 中的 1024x768 像素)

当我使用 DDMS 监视此过程时,从 A 移动到 B 时,堆按预期上升。当我按下 B 上的(硬件或软件使用super.onBackPressed())按钮并再次进入 A 时,即使在调用之后,堆也不会再次缩小垃圾收集。这是预期的吗?B占用的内存会在进程的生命周期内被释放吗?

4

2 回答 2

3

onBackPressed()只是从BackStack中弹出你的 B Activity然后你的 Activity 不再可见(onStop() 调用)对你来说,但它的进程还没有被杀死,直到操作系统需要它的内存

于 2013-01-28T08:35:43.710 回答
1

请注意,垃圾收集器的工作方式是“不确定的”。特别是,即使是对垃圾收集器的调用也不意味着内存被完全释放。只有在请求更多内存时才能保证释放内存。

于 2013-01-28T08:37:10.777 回答