0

当用户想要更改活动主题时,我必须更改它。为此,我必须在设置主题后调用 recreate() 来激活主题。但是我的 Activity 从网络获取数据并在 Recycler 视图中显示给用户。每次主题变化,数据都在刷新,我需要防止这种情况发生。

除了保存在数据库中之外,调用 recreate() 时是否有任何可能的方法来保存数据?

我尝试覆盖 onSaveInstanceState(); 但是 onCreate() 中的 savedInstanceState 在调用 recreate 时似乎为“null”。

4

1 回答 1

2

您应该将数据保存在文件中,例如 SQLite 数据库或 SharedPreferences

Activity 的生命周期将多次更改,您无法阻止这一点,您的数据应在 OnStart 或 OnResume 等事件中保存和检索

作为另一个建议,不要使用静态变量之类的东西来保存您的数据,静态变量存储在堆中,当您的活动不使用并且 Android 操作系统需要更多内存时将被清除

于 2017-04-20T19:44:21.583 回答