活动的荒谬行为

时间:2012-09-27 11:24:49

标签: android android-intent android-activity

我正在为Android ICS构建聊天客户端。我有一个名单(联系人)活动,可以导致聊天活动(点击名单(联系人)列表中的条目后)。然后,人们可以聊天,并且可以在点击聊天屏幕上的按钮后返回到名单屏幕。

用于在代码中启动活动的标志是:Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

名册活动屏幕上还有一个搜索按钮,它将我们带到搜索活动,这反过来又让我们可以进入聊天活动。

这里使用的标志是相同的。这三个都是singleTask。

现在的问题是,当我从名册活动转到聊天活动然后回到名册活动时,一切都很好。但是当我从名册活动到搜索活动,然后到聊天活动然后回到名册活动,然后重新创建名册活动,即调用名单的oncreate()功能。这在其他流程中不会发生。

任何人都可以解释这个。创建一个新的搜索活动可能不被欣赏,但假设它很好,可以解释为什么会发生这种情况?

也没有调用ondestroy()名册活动(因为它不是强制性的)。

1 个答案:

答案 0 :(得分:2)

您必须始终期望在恢复或以其他方式从其他屏幕返回您的活动后的任何时间点调用onCreate。 Android可以选择终止任何暂停的活动,即对用户隐藏。当回到那个Activity时,如果它已经被销毁,Android将通过调用onCreate(和onRestoreInstanceState)来重新创建它,这就是为什么你应该保存那些应该在onRetainInstanceState中超出上下文变化的易失性数据。)

这种行为没有什么荒谬之处,它作为Android activity life-cycle的一部分得到了很好的记录。