Android ViewModel - 如何在某些配置更改时强制重新创建
创始人
2024-08-19 03:30:04
0

在Android中,ViewModel是用于存储和管理与UI相关的数据的类。当配置更改(如屏幕旋转)发生时,ViewModel会保持其数据,并将其重新分配给新创建的活动或碎片实例。

然而,有时我们可能需要在某些配置更改时强制重新创建ViewModel,即使数据没有改变。以下是一种解决方法,其中包含代码示例:

  1. 首先,在您的ViewModel类中创建一个标志变量,用于指示是否需要强制重新创建ViewModel。
public class MyViewModel extends ViewModel {
    private boolean forceRefresh = false;

    // getter and setter for forceRefresh variable
    public boolean isForceRefresh() {
        return forceRefresh;
    }

    public void setForceRefresh(boolean forceRefresh) {
        this.forceRefresh = forceRefresh;
    }
    
    // other ViewModel methods and data
    ...
}
  1. 在Activity或Fragment中,获取ViewModel实例并观察forceRefresh变量的变化。
public class MyActivity extends AppCompatActivity {
    private MyViewModel viewModel;

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

        viewModel = ViewModelProviders.of(this).get(MyViewModel.class);

        // Observe the forceRefresh variable
        viewModel.isForceRefresh().observe(this, new Observer() {
            @Override
            public void onChanged(Boolean forceRefresh) {
                if (forceRefresh) {
                    recreate(); // Force recreate the activity
                }
            }
        });

        // Other activity code
        ...
    }

    @Override
    protected void onDestroy() {
        viewModel.setForceRefresh(false); // Reset forceRefresh variable to false
        super.onDestroy();
    }
}
  1. 当需要强制重新创建ViewModel时,设置forceRefresh变量为true。
viewModel.setForceRefresh(true);

当forceRefresh变量的值变为true时,观察者将调用recreate()方法,强制重新创建Activity。在重新创建Activity时,ViewModel将重新创建,即使数据没有改变。

请注意,这种方法仅适用于在Activity或Fragment中强制重新创建ViewModel。如果您想在其他组件(如Service)中重新创建ViewModel,您需要采取其他的方法来实现。

相关内容

热门资讯

开挂辅助平台"wpk... >>您好:wpk控制牌是真的吗确实是有挂的,很多玩家在这款wpk控制牌是真的吗游戏中打牌都会发现很多...
开挂辅助工具"拱趴大... 开挂辅助工具"拱趴大菠萝有什么挂"开挂(透视)辅助软件(有挂教学) >>您好:软件加薇1367043...
开挂辅助脚本"pok... 开挂辅助脚本"pokemmo免费脚本"开挂(透视)辅助安装(确实有挂);无需打开直接搜索薇:1367...
开挂辅助插件"wep... wepoker游戏的安装教程是一款专注玩家量身打造的游戏记牌类型软件,在wepoker游戏的安装教程...
开挂辅助插件"红龙p... 开挂辅助插件"红龙poker辅助器免费观看"开挂(透视)辅助脚本(有挂方法);打开点击测试直接进入微...
开挂辅助插件"wep... 您好:这款wepoker有机器人吗游戏是可以开挂的,确实是有挂的,很多玩家在这款wepoker有机器...
开挂辅助安装"wpk... 开挂辅助安装"wpk私人局辅助是真的吗"开挂(透视)辅助插件(了解有挂)1、下载安装好wpk私人局辅...
开挂辅助软件"we ... 开挂辅助软件"we poker辅助器下载"开挂(透视)辅助软件(确实有挂);是一款可以让一直输的玩家...
开挂辅助工具"we-... 开挂辅助工具"we-poker靠谱吗"开挂(透视)辅助安装(有挂辅助)1、下载安装好we-poker...
开挂辅助平台"aap... 大家好,今天小编来为大家解答aapoker ai插件这个问题咨询软件客服可以免费测试直接加微信(13...