如何防止在调用重新创建活动时丢失数据

时间:2017-04-20 19:27:57

标签: android android-asynctask themes recreate

当用户想要更改主题时,我必须更改活动的主题。 为此,我必须在设置主题后调用recreate()来激活主题。 但我的Activity从Web获取数据并在Recycler视图中显示给用户。 每次主题更改时,数据都会刷新,我需要阻止这一点。

除了保存在数据库中之外,还有什么方法可以在调用recreate()时保存数据吗?

我尝试重写onSaveInstanceState();但是当调用recreate时,onCreate()中的savedInstanceState似乎是'null'。

1 个答案:

答案 0 :(得分:1)

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

活动的生命周期会多次改变而你无法阻止,你的数据应该在像OnStart或OnResume这样的事件上保存和检索

另外一个建议是不要使用像Static-Variables这样的东西来保存你的数据,存储在堆中的静态变量会在你的Activity没有被使用且Android OS需要更多内存时被清除