旋转屏幕时丢失数据

44

我的应用程序有一个有趣的小bug。当用户旋转屏幕时,我的活动中会丢失一些数据。是否有人知道为什么会出现这种情况?


我找到的最快速的解决方案是这个:<a>http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange</a> - Theodor Paulus
4
一个有趣的回答:你可以强制固定设备方向,这样它就不能旋转了。如果坚持不让设备旋转比允许旋转更重要,那就建议采取这种方式。 - user1212212
12个回答

0
“ViewModel”是一个专门设计用于在配置更改(例如屏幕旋转)时保留View所需信息并且能够生存的类。当设备的配置或旋转导致“View”(即片段/活动)被销毁时,“ViewModel”不会被销毁,而新的View实例将重新连接到同一“ViewModel”。
以下是“ViewModel”中代码的示例,以便View可以保存数据:
private boolean mSomeBooleanData = false;

public boolean getSomeBooleanData(){
    return mSomeBooleanData;
}

public void setSomeBooleanData (boolean data) {
    mSomeBooleanData = data;
}

现在在 Activity/Fragment 类的某个地方,我们可以从 ViewModel 中调用这些方法,在旋转期间保存我们想要保存的数据:

mViewModel.setSomeBooleanData(true);

然后当在 onResume() 方法中重新创建 Activity/Fragment 类时,我们可以从 ViewModel 中查找保存的数据并对其进行操作:

public void onResume(){
    super.onResume();
   
    if (mViewModel.getSomeBooleanData()){
        //...Do something when saved data is True
    } else {
        //...Do something when saved data is False
    }
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接