0

我基本上有一个理论问题。假设我有两个活动 A 和 B。我正在使用 Intent 由 A 调用活动 B,但没有完成 A,所以基本上它会继续 onPause()。在完成一些任务后,我完成了活动 B,所以现在活动 A 将排在前面。我的问题是在完成()方法之后会发生什么,因为有人告诉我,在完成()方法之后活动 B 将在堆栈中但无法访问。我很困惑,如果发生这种情况,那不是浪费内存吗?或者如果我不正确,请以正确的方式指导我。

4

1 回答 1

1

我不确定我是否 100% 理解你的问题。但是让我们试试...

您启动 ActivityA,因此您的任务中的活动堆栈如下所示:

ActivityA (shown to user)

现在 ActivityA 启动 ActivityB 但不会自行完成。ActivityA 暂停,ActivityB 显示给用户。您的活动堆栈如下所示:

ActivityB (shown to user)
ActivityA (paused)

现在用户在 ActivityB 中做一些事情,然后 ActivityB 调用finish()它自己。ActivityA 现在显示给用户。您的活动堆栈如下所示:

ActivityA (shown to user)

至此,ActivityB就完成了,可以从系统中移除了。Android 调用onDestroy()ActivityB,垃圾收集器最终会将其从堆中移除。这里没有“内存浪费”。

如果我误解了您的问题,请发表评论,我会相应地修正我的答案。

于 2012-10-10T22:27:41.957 回答