Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何防止调用“重新创建活动”时丢失数据_Android_Android Asynctask_Themes_Recreate - Fatal编程技术网

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

Android 如何防止调用“重新创建活动”时丢失数据,android,android-asynctask,themes,recreate,Android,Android Asynctask,Themes,Recreate,当用户想要更改活动主题时,我必须更改活动主题。 为此,我必须在设置主题后调用recreate()来激活主题。 但我的活动从web获取数据,并以回收器视图显示给用户。 每次主题更改时,数据都会被刷新,我需要防止这种情况 在调用recreate()时,除了保存在数据库中之外,还有其他方法保存数据吗 我尝试重写onSaveInstanceState();但调用recreate时,onCreate()中的savedInstanceState似乎为“null” 您应该将数据保存在诸如SQLite数据库或S

当用户想要更改活动主题时,我必须更改活动主题。 为此,我必须在设置主题后调用recreate()来激活主题。 但我的活动从web获取数据,并以回收器视图显示给用户。 每次主题更改时,数据都会被刷新,我需要防止这种情况

在调用recreate()时,除了保存在数据库中之外,还有其他方法保存数据吗


我尝试重写onSaveInstanceState();但调用recreate时,onCreate()中的savedInstanceState似乎为“null”

您应该将数据保存在诸如SQLite数据库或SharedReferences之类的文件中

活动的生命周期将发生多次变化,您无法阻止这种情况,您的数据应该在OnStart或OnResume之类的事件中保存和检索


另一个建议是,不要使用静态变量之类的东西来保存数据,静态变量存储在堆中,当您的活动未使用且Android操作系统需要更多内存时,静态变量将被清除。您应该将数据保存在一个文件中,如SQLite数据库或SharedReferences

活动的生命周期将发生多次变化,您无法阻止这种情况,您的数据应该在OnStart或OnResume之类的事件中保存和检索


另一个建议是,不要使用静态变量之类的东西来保存数据,静态变量存储在堆中,当您的活动未被使用,并且Android操作系统需要更多内存时,静态变量将被清除。请将该数据暂时保存在活动之外的某个位置,例如单例缓存中。只是要非常小心避免内存泄漏。将数据暂时保存在活动之外的某个位置,例如在单例缓存中。只是要非常小心,以避免内存泄漏。