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

相关内容

热门资讯

辅助黑科技(WPK机器人)外挂... 辅助黑科技(WPK机器人)外挂透明挂辅助黑科技(透明挂)切实有挂(有挂教程)-哔哩哔哩1、任何WPK...
黑科技好友房(wepoke线上... 黑科技好友房(wepoke线上)外挂透明挂辅助代打(软件透明挂)一贯真的是有挂(有挂技术)-哔哩哔哩...
黑科技软件(菠萝德州app)外... 黑科技软件(菠萝德州app)外挂透明挂辅助软件(黑科技ai)竟然真的有挂(有挂教程)-哔哩哔哩进入游...
黑科技脚本(WPK)外挂透明挂... 黑科技脚本(WPK)外挂透明挂辅助挂(黑科技ai)真是真的有挂(有人有挂)-哔哩哔哩1.WPK ai...
黑科技辅助(Wepoke辅助挂... 黑科技辅助(Wepoke辅助挂)外挂透明挂辅助黑科技(黑科技ai)其实是有挂(真实有挂)-哔哩哔哩1...
黑科技ai(德州wpk德州)外... 黑科技ai(德州wpk德州)外挂透明挂辅助器(透视)一直真的是有挂(有挂秘笈)-哔哩哔哩1、德州wp...
黑科技存在(aapoker开发... 黑科技存在(aapoker开发)外挂透明挂辅助ai代打(软件透明挂)总是真的有挂(有挂神器)-哔哩哔...
黑科技黑科技(wpk安卓版)外... 黑科技黑科技(wpk安卓版)外挂透明挂辅助设备(透视)一贯真的有挂(有挂方式)-哔哩哔哩1、下载好w...
黑科技攻略(xpoker)外挂... 黑科技攻略(xpoker)外挂透明挂辅助下载(辅助挂)真是是真的有挂(有挂助手)-哔哩哔哩1、xpo...
黑科技辅助(wpk德州ai机器... 黑科技辅助(wpk德州ai机器人)外挂透明挂辅助AI(透视)原来真的是有挂(有挂教程)-哔哩哔哩;1...