我正在为 Android ICS
构建聊天客户端。我有一个可以导致聊天 Activity 的花名册(联系人) Activity (在单击花名册(联系人)列表中的条目后)。然后,人们可以聊天,并且可以在单击聊天屏幕上出现的按钮后返回到花名册屏幕。
用于在创建 Intent 的代码中启动 Activity 的标志是:Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
花名册 Activity 屏幕上还有一个搜索按钮,可以让我们搜索 Activity ,然后我们可以进入聊天 Activity 。
这里使用的标志是相同的。这三个都是 singleTask。
现在的问题是,当我从花名册 Activity 转到聊天 Activity ,然后再回到花名册 Activity 时,一切都很好。但是,当我从名册 Activity 转到搜索 Activity ,然后转到聊天 Activity ,然后回到名册 Activity 时,名册 Activity 就会重新创建,即调用名册的 oncreate()
函数。这不会发生在其他流程中。
谁能解释一下。创建一个新的搜索 Activity 可能不受欢迎,但假设它很好,为什么会发生这种情况?
也不会调用名册 Activity 的 ondestroy()
(因为它不是强制性的)。
最佳答案
您必须始终期望 onCreate 在恢复或以其他方式从不同屏幕返回您的 Activity 后的任何时间点被调用。 Android 可以选择终止任何暂停的 Activity ,即对用户隐藏的 Activity 。当返回到该 Activity 时,如果它已被销毁,Android 将通过调用 onCreate(和 onRestoreInstanceState,这就是为什么您应该保存 volatile 数据,这些数据应该比 onRetainInstanceState 中的上下文更改更有效。)重新创建它。
这种行为并没有什么可笑的,它在 Android 的 activity life-cycle 中得到了很好的记录。 .
关于android - 荒谬的 Activity 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620265/