gpt4 book ai didi

android - 在 android Application 类中保持状态

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:49 25 4
gpt4 key购买 nike

我正在开发一个包含 10 多个 Activity 的 Android 应用程序。我几乎在每个 Activity 中都访问了一些状态对象,为此目的,这些对象在 MyApplication 类中实现为全局静态变量。

我注意到只要用户“在”应用程序中,这种方法就可以。然而,当他按下主页按钮并打开另一个应用程序,然后通过“最近的 Activity ”按钮返回到我的应用程序时,我看到 Android 系统从 MyApplication 重置了静态信息,所以我必须处理 NullPointerExceptions。我知道这种行为是由Android杀死并重新创建应用程序进程引起的。

我知道保存这种数据的最好方法是使用 SharedPreferences 或 SQLite,我在 onCreate 中检查 MyState==null 是否并恢复它没有问题,但问题是我不知道何时 正确存储我的状态对象(在首选项或数据库中)。我试图覆盖 MyApplication 的 finalize() - 不好,我看到可能不会调用 onLowMemory,我不知道如何使用 onPause、OnStop 等等,因为我有太多的 Activity ,序列化反序列化会相当大减慢应用程序。

有什么想法吗?提前致谢!

最佳答案

最好不要依赖于 Application 类,除非您需要在开始其他任何事情之前加载一些数据。 Android 可以随时终止您的进程以释放资源,因此您的应用应该能够处理这种情况。将所有数据保存在一个 snigleton 类中,并延迟加载它——检查是否为 null,如果是,则在第一次访问时加载。如果状态需要持久,请考虑将其保存在文件/共享首选项中。如果没有,您的应用程序可能没有它也能正常运行,因此请确保检查 null 等。

通常,您应该在 Activity 变为非 Activity 状态时保持状态 -- onStop()onPause(),但您可以在有意义时尽快保存(例如,用户已输入所有必需的数据)。分离一个 AsyncTask 以在后台保存数据并让用户继续他们的工作。

关于android - 在 android Application 类中保持状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794719/

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