当配置更改发生时,ViewModel会将其保存在ViewModelStore中,以便在重新创建Activity或Fragment时保留其数据。可以使用ViewModelProvider工厂类来获取ViewModel实例,而不需要手动创建新的ViewModel实例。以下是一个示例代码:
public class MainActivity extends AppCompatActivity {
private MyViewModel myViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取ViewModel实例
myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
// 操作ViewModel数据
myViewModel.setData("Hello, World!");
// 获取ViewModel数据
String data = myViewModel.getData();
}
@Override
protected void onDestroy() {
super.onDestroy();
// ViewModelStore销毁之前调用ViewModel的onCleared()方法来清理资源
myViewModel.onCleared();
}
}
public class MyViewModel extends ViewModel {
// 实例化数据
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
// ViewModelStore销毁之前调用的方法
@Override
protected void onCleared() {
super.onCleared();
// 清理资源
data = null;
}
}