活动记忆管理

时间:2012-10-09 05:35:36

标签: android android-activity

  

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

1 个答案:

答案 0 :(得分: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在ActivityB上调用onDestroy(),垃圾收集器最终会从堆中删除它。这里没有“浪费记忆”。

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

相关问题