setRetainInstance 已弃用。什么是替代方案?

Rus*_*hts 5 android deprecated

setRetainInstance 已弃用。还有什么选择?

我有很多片段,里面有很多复杂的对象变量。今天我只有一行代码:setRetainInstance. 完整代码示例如下:

public class MyFragment extends Fragment{
    private MyComplicatedCustomClass1 object1;
    private MyComplicatedCustomClass2 object2;
    private MyComplicatedCustomClass3 object3;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        setRetainInstance(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

这足以让我在更改配置时(例如,更改屏幕旋转时)忘记保存和恢复对象。

我应该在代码中更改什么来替换setRetainInstance

如果可能的话,请给我一个简短的代码示例。

聚苯乙烯

注意: 我可以阅读文档 - 所以请不要以 Google 风格的方式回答:“ViewModel 是最好的...google 推荐...以及 bla-bla...”。并且请不要复制/粘贴 Google 文档中的文章 - 我可以自己查看。

如果您有具体的工作代码解决方案 - 我将非常感激。

小智 8

我在 AndroidManifest.xml 中设置 configChanges,而不是在片段中设置 setRetainInstance。当我翻转方向时,活动不会破坏我的片段和其中的对象。

<activity android:name=".MyActivity"
      android:configChanges="screenSize|orientation"
      android:label="@string/app_name">
Run Code Online (Sandbox Code Playgroud)