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

相关内容

热门资讯

透视ai代打!wepoker轻... 透视ai代打!wepoker轻量版有透视吗,牵手游戏辅助,一贯是有挂(了解必备教程)-哔哩哔哩暗藏猫...
透视规律!wepoker有用吗... 透视规律!wepoker有用吗(透视)开挂辅助器(切实真的是有挂)-哔哩哔哩透视规律!wepoker...
透视挂!pokerworld破... 透视挂!pokerworld破解版下载,哈糖大菠萝破解器,秘籍教程(确实真的有挂)-哔哩哔哩1、不需...
受玩家影响!aapoker插件... 受玩家影响!aapoker插件,白银胡乐辅助脚本最新版安装方法,本来有挂(关于必备教程)-哔哩哔哩亲...
透视稳定!pokemmo辅助器... 透视稳定!pokemmo辅助器手机版下载(透视)开挂辅助技巧(其实存在有挂)-哔哩哔哩1)pokem...
透视好牌!wepoker开辅助... 透视好牌!wepoker开辅助能查到吗,wepokerplus脚本,教材教程(果然存在有挂)-哔哩哔...
透视好牌!wpk辅助,兴动休闲... 透视好牌!wpk辅助,兴动休闲辅助,果然是真的挂(解密AI教程)-哔哩哔哩1、下载好兴动休闲辅助辅助...
透视输赢!wepoker好友房... 透视输赢!wepoker好友房开挂(透视)开挂辅助神器(果然是真的挂)-哔哩哔哩1、不需要AI权限,...
透视能赢!德扑圈透视挂,wep... 透视能赢!德扑圈透视挂,wepoker怎么设置房间,妙计教程(好像有挂)-哔哩哔哩1、在wepoke...
为切实保障!德普之星私人局辅助... 为切实保障!德普之星私人局辅助器,新九九辅助,切实存在有挂(科普高科技教程)-哔哩哔哩德普之星私人局...