gpt4 book ai didi

android - Android 应用程序应如何响应环境中的重大变化?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:12 26 4
gpt4 key购买 nike

假设有一个应用程序在 AccountManager 中创建一个帐户。用户浏览此应用程序相当复杂的 Activity 图一段时间,然后转到 Android 设置中的 Accounts and Sync,删除帐户并登录(仍在 Accounts and Sync 作为不同的用户。

我已经为 LOGIN_ACCOUNTS_CHANGED 广播定义了一个接收器,并且我能够优雅地关闭所有服务。但 Activity 仍然存在,在其标题中带有第一个用户的名字(UI 在很多方面都变得困惑,但这个是最明显的)。

那么,问题是:应该如何处理这些孤儿 Activity ?

  • 我可以使用 clearTaskOnLaunch 之类的东西,但是当更改发生时,所有 Activity 都在后台进行。
  • 在 SharedPreferences 中设置一个标志并检查每个 Activity 的 onResume(),然后在需要时启动 clearTask Activity ?太乱了。
  • 我能想到的最佳选择是使用 android.os.Process.killProcess(android.os.Process.myPid()) 终止所有 Activity 。这不太优雅,但可以完成工作。唯一的副作用是 Activity 堆栈仍然存在,当最合理的事情似乎是从 LAUNCHER Activity 开始时,具有清晰的历史记录。

那么,应对所描述场景的最佳方式是什么?

最佳答案

让您的所有 Activity 都从 MyActivity 类扩展,该类有一个 BroadcastReceiver 成员:mChangeReceiver。

MyActivityonCreate 中注册 mChangeReceiver(并在 onDestroy 中注销)到 LOGIN_ACCOUNTS_CHANGED Intent 。

让 mChangeReceiver 调用一些抽象方法 onAccountChanged(),所有扩展类都需要重写和实现该方法以反射(reflect) GUI 中的更改。

就是这样。现在,每当帐户发生变化时,您所有的生活 Activity 都会调用它们的 onAccountChanged 方法并刷新它们的 GUI。

关于android - Android 应用程序应如何响应环境中的重大变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10246975/

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