Android 如何防止调用“重新创建活动”时丢失数据
当用户想要更改活动主题时,我必须更改活动主题。 为此,我必须在设置主题后调用recreate()来激活主题。 但我的活动从web获取数据,并以回收器视图显示给用户。 每次主题更改时,数据都会被刷新,我需要防止这种情况 在调用recreate()时,除了保存在数据库中之外,还有其他方法保存数据吗Android 如何防止调用“重新创建活动”时丢失数据,android,android-asynctask,themes,recreate,Android,Android Asynctask,Themes,Recreate,当用户想要更改活动主题时,我必须更改活动主题。 为此,我必须在设置主题后调用recreate()来激活主题。 但我的活动从web获取数据,并以回收器视图显示给用户。 每次主题更改时,数据都会被刷新,我需要防止这种情况 在调用recreate()时,除了保存在数据库中之外,还有其他方法保存数据吗 我尝试重写onSaveInstanceState();但调用recreate时,onCreate()中的savedInstanceState似乎为“null” 您应该将数据保存在诸如SQLite数据库或S
我尝试重写onSaveInstanceState();但调用recreate时,onCreate()中的savedInstanceState似乎为“null” 您应该将数据保存在诸如SQLite数据库或SharedReferences之类的文件中 活动的生命周期将发生多次变化,您无法阻止这种情况,您的数据应该在OnStart或OnResume之类的事件中保存和检索
另一个建议是,不要使用静态变量之类的东西来保存数据,静态变量存储在堆中,当您的活动未使用且Android操作系统需要更多内存时,静态变量将被清除。您应该将数据保存在一个文件中,如SQLite数据库或SharedReferences 活动的生命周期将发生多次变化,您无法阻止这种情况,您的数据应该在OnStart或OnResume之类的事件中保存和检索
另一个建议是,不要使用静态变量之类的东西来保存数据,静态变量存储在堆中,当您的活动未被使用,并且Android操作系统需要更多内存时,静态变量将被清除。请将该数据暂时保存在活动之外的某个位置,例如单例缓存中。只是要非常小心避免内存泄漏。将数据暂时保存在活动之外的某个位置,例如在单例缓存中。只是要非常小心,以避免内存泄漏。