android - 荒谬的 Activity 行为

标签 android android-intent android-activity

我正在为 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/

相关文章:

android - Xamarin 上的 NLog 日志文件 - Android 问题

android - 如何每 5 分钟运行一个前台服务 10 秒?

android - 如何以编程方式在主屏幕上调出小部件

android - 按后退键返回上一个 View

java - 关于如何更改通知接收器中的 setLatestEventInfo 的替代方法

android - 动态生成多个Gridview

android - 最新android不再发送UDP广播包

android - 从图库中点击选择多张图片

android - 如果在 Android Studio 中突出显示了至少一个 subview ,则突出显示可扩展 ListView 的标题 View

Android Toast 显示之前的 Activity