Android ViewModel如何确保在屏幕旋转时必须绑定到相同的Activity或Fragment?
创始人
2024-08-19 04:30:03
0

在Android中,ViewModel是用于存储和管理与UI相关的数据的类。当屏幕旋转时,Activity或Fragment会重新创建,但ViewModel的实例必须保持不变。为了确保ViewModel在屏幕旋转时绑定到相同的Activity或Fragment,可以使用ViewModelProviders类提供的ViewModelProvider方式。

首先,在Activity或Fragment中创建一个ViewModelProvider实例:

ViewModelProvider viewModelProvider = new ViewModelProvider(this);

然后,在获取ViewModel时使用ViewModelProvider的get方法:

MyViewModel myViewModel = viewModelProvider.get(MyViewModel.class);

在上面的代码中,MyViewModel是自定义的ViewModel类。ViewModelProvider会检查是否已经存在与当前Activity或Fragment关联的ViewModel实例。如果已经存在,它将返回现有的实例;如果不存在,它将创建一个新的实例。

在Activity或Fragment中使用ViewModelProvider获取ViewModel的示例代码如下:

public class MyActivity extends AppCompatActivity {
    private MyViewModel myViewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        ViewModelProvider viewModelProvider = new ViewModelProvider(this);
        myViewModel = viewModelProvider.get(MyViewModel.class);

        // 使用myViewModel进行操作
    }
}

通过这种方式,无论屏幕如何旋转,ViewModel实例都会保持不变,并且能够与相应的Activity或Fragment绑定。

需要注意的是,为了使ViewModelProvider能够正确地管理ViewModel的生命周期,Activity或Fragment必须继承自ViewModelStoreOwner接口。

相关内容

热门资讯

外挂模板!大菠萝手游辅助,佛手... 外挂模板!大菠萝手游辅助,佛手在线大菠萝技巧-切实真的有辅助攻略(哔哩哔哩)佛手在线大菠萝技巧辅助器...
外挂资料!哈糖大菠萝有没有挂,... 外挂资料!哈糖大菠萝有没有挂,哈糖大菠萝能开挂吗-确实是有辅助插件(哔哩哔哩)1、哈糖大菠萝能开挂吗...
外挂操作!拱趴大菠萝自动计算机... 外挂操作!拱趴大菠萝自动计算机器人,德普之星怎么开辅助-竟然真的有辅助脚本(哔哩哔哩)1.拱趴大菠萝...
外挂教材!wepoker安装教... 外挂教材!wepoker安装教程,哈糖大菠萝有没有挂-原来真的是有辅助插件(哔哩哔哩)该软件可以轻松...
外挂法子!智星菠萝德州插件最新... 外挂法子!智星菠萝德州插件最新版本更新内容详解,德普之星透视辅助软件-原来真的是有辅助软件(哔哩哔哩...
外挂演示!sohoo poke... 外挂演示!sohoo poker辅助,werplan外卦神器-一直真的有辅助软件(哔哩哔哩)1、we...
外挂课程!德州真人透视脚本,w... 外挂课程!德州真人透视脚本,werplan怎么作必弊-本来存在有辅助插件(哔哩哔哩)1、外挂课程!德...
外挂妙招!智星菠萝德州辅助译码... 外挂妙招!智星菠萝德州辅助译码插件靠谱吗,哈糖大菠萝挂法-原来真的有辅助app(哔哩哔哩)运哈糖大菠...
外挂大纲!德州局脚本,aa p... 外挂大纲!德州局脚本,aa poker辅助-竟然有辅助插件(哔哩哔哩)1、德州局脚本免费脚本咨询教程...
外挂手筋!德扑圈有透视吗,约局... 外挂手筋!德扑圈有透视吗,约局吧作必弊脚本-一贯一直都是有辅助教程(哔哩哔哩)该软件可以轻松地帮助玩...