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接口。

相关内容

热门资讯

记者发布!pokemmo修改器... 记者发布!pokemmo修改器手机版,wepoker私人辅助器,总是真的是有挂(有挂助手)1、操作简...
实测分享!德普之星透视辅助软件... 实测分享!德普之星透视辅助软件是真的吗,德州hhpoker脚本,真是是有挂(有挂分享)1、下载好脚本...
揭秘真相!wepoker辅助器... 揭秘真相!wepoker辅助器官方,we poker辅助器,本来真的有挂(有挂总结)1、wepoke...
科技通报!wepoker怎么增... 科技通报!wepoker怎么增加运气,HH平台挂,一贯真的有挂(有挂细节)亲,关键说明,透视脚本安卓...
技术分享!hhpoker有没有... 技术分享!hhpoker有没有辅助,hhpoker脚本,真是真的有挂(有挂方式)1、很好的工具软件,...
一分钟揭秘!pokemmo手机... 一分钟揭秘!pokemmo手机版修改器,大菠萝辅助器,原来真的是有挂(有挂总结)1、让任何用户在无需...
9分钟了解!wepoker透视... 9分钟了解!wepoker透视苹果系统,wepoker辅助透视软件,果然存在有挂(有挂教学)1、we...
免费测试版!werplan辅助... 免费测试版!werplan辅助软件,德普之星透视辅助软件,确实是有挂(真的有挂)辅助器是一种具有地方...
玩家实测!wepoker有辅助... 玩家实测!wepoker有辅助插件吗,wepoker透视脚本是什么,切实真的是有挂(有挂总结)1、打...
科普分享!wpk可以作弊吗,h... 科普分享!wpk可以作弊吗,hhpoker德州有挂吗,原来是有挂(有人有挂)1、进入到是否有挂之后,...