gpt4 book ai didi

java - 维护Android Activity的数据 : onPause, onSaveInstanceState, onRetainNonConfigurationInstance

转载 作者:行者123 更新时间:2023-11-29 03:58:11 30 4
gpt4 key购买 nike

我有一个应用程序 Activity,它在 onCreate 中使用 AsyncTask 从服务加载 XML 文件。 XML 被解析为 ArrayList。当我切换到另一个 Activity 然后返回主 Activity 时,我希望能够识别该 XML 文件已经加载并使用填充的 ArrayList

持久化 ArrayList 的最佳方式是什么?

onSaveInstanceState 似乎只支持原语,我一直无法设置 onRetainNonConfigurationInstance 实际被调用的情况。所以在 onCreate 中,每当我切换到那个 Activity 时,XML 数据就会从服务器加载。我已经使 ArrayList 中的模型实现了 Parcelable,所以可以以某种方式使用它吗?

最佳答案

What is the best way to persist that ArrayList?

我看不出您的问题与多项 Activity 有何关系。例如,如果用户按下 HOME(喘息!)会发生什么?您的应用程序最终将被关闭。您要从服务器重新加载数据吗?如果答案是"is",那么你不需要“坚持”任何东西,onSaveInstanceState()可能就足够了(见下文)。如果答案是“否”,那么您需要重新考虑您的数据模型方法,因此您安排将数据保存在数据库中,定期与您的 Web 服务同步,并可能转储 ArrayList并将其替换为 Cursor .

onSaveInstanceState only seems to support primitives

如果我的 HOME 问题的答案是"is",那么您可以只保留 Activity 数据成员中的数据,如果它的大小适中,也可以将其存储在 Bundle 中。在onSaveInstanceState() . Bundle可以容纳 ArrayListParcelable .但是,如果数据集很大(比如 100KB 或更多),您可能不想走这条路,应该考虑我上面描述的“否”路径。

I've been unable to set up a case where onRetainNonConfigurationInstance actually gets called.

旋转屏幕。还有其他场景,但方向变化是最容易触发它的场景。

但是,这与您的问题无关。

关于java - 维护Android Activity的数据 : onPause, onSaveInstanceState, onRetainNonConfigurationInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5123562/

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