要实现在第一次调用 Android ViewModel 时不加载数据,可以通过添加一个标志位来实现。首先,在 ViewModel 类中添加一个布尔类型的变量 isFirstLoad:
public class MyViewModel extends ViewModel {
private boolean isFirstLoad = true;
// 其他成员变量和方法
public boolean isFirstLoad() {
return isFirstLoad;
}
public void setFirstLoad(boolean firstLoad) {
isFirstLoad = firstLoad;
}
}
然后,在 Activity 或 Fragment 中使用 ViewModel 的地方,可以根据 isFirstLoad 的值来决定是否加载数据。在第一次调用 ViewModel 的时候,将 isFirstLoad 设置为 false,以后的调用中就不会再加载数据:
public class MyActivity extends AppCompatActivity {
private MyViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 其他初始化代码
viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
if (viewModel.isFirstLoad()) {
// 第一次调用,加载数据
loadData();
viewModel.setFirstLoad(false);
}
}
// 加载数据的方法
private void loadData() {
// 加载数据的代码
}
}
这样,第一次调用 ViewModel 的时候会加载数据,以后的调用就不会再加载数据了。