gpt4 book ai didi

Android Activity 在进入后台后两次收到相同的 Intent

转载 作者:搜寻专家 更新时间:2023-11-01 09:03:31 26 4
gpt4 key购买 nike

在我的应用程序中,我有以下结构:

Activity A 调用 Activity B,并结束,将自己从堆栈中移除; Activity B 从 Activity A 接收到指定要执行的某些操作的 Intent,当执行这些操作时,用户将看到一条指示它的消息(仍在 Activity B 中)。如果用户按下主页按钮,应用程序将转到后台,调用 "onPause",然后调用 "onStop"。一切都按预期工作。

问题是,如果用户将应用程序留在后台几个小时,并尝试再次打开应用程序(几个小时后), Activity B 中的 onCreate 方法将被调用与几个小时前从 Activity A 收到的 Intent 完全相同。

(如果用户在几分钟后返回应用程序,他将看到与离开时一样的 Activity B)

我想要的是,在这种情况下,我的应用程序将打开 Activity A 而不是 Activity B,或者 Activity B,但会显示用户离开时屏幕上显示的消息。

查看 Activity 生命周期,应用程序似乎正在被操作系统杀死,所有这些都是有道理的,我真正不明白的是为什么 Activity B 使用 onCreate 方法打开并且和以前一样的 Intent 。

最佳答案

使用onSaveInstanceState()记录ActivityB的状态。 Android 会在终止进程之前调用它。当用户返回应用程序时,它将重新创建流程,然后重新创建 Activity 堆栈顶部的任何 Activity (在您的情况下为 ActivityB)。当它这样做时,它会将保存的实例状态作为 onCreate() 调用中的参数传递给 Activity 。你应该能够在那里放一些东西,这样你的 ActivityB 就可以知道它在进程终止/重启后正在重新创建。在这种情况下,ActivityB 可以再次向用户显示消息(它必须将其保存在 onSaveInstanceState() 方法中)或者它可以将用户重定向回 ActivityA 以便他可以开始所有再来一遍。

关于Android Activity 在进入后台后两次收到相同的 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com