介绍
安卓进入后台以后,会重新加载界面和数据,如果想保存用户数据必须保存一下
官方文档
savedstate 版本说明
使用
dependencies {
...
def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
}
public class MyViewModel extends ViewModel {
int aBack;
private static final String ATeamScore = "ATeamScore";
private final SavedStateHandle mState;
public MyViewModel(SavedStateHandle savedStateHandle){
mState = savedStateHandle;
}
public MutableLiveData<Integer> getATeamScore() {
if(!mState.contains(ATeamScore)){
mState.set(ATeamScore,0);
}
return mState.getLiveData(ATeamScore);
}
public void aTeamAdd(int p){
aBack = mState.get(ATeamScore);
getATeamScore().setValue(getATeamScore().getValue()+p);
}
}
//数据绑定的数据
MyViewModel myViewModel;
//数据绑定的视图
ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); //不能再用原来的设置视图了
binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
myViewModel = new ViewModelProvider(this,new SavedStateViewModelFactory(getApplication(),this)).get(MyViewModel.class);
binding.setData(myViewModel);
binding.setLifecycleOwner(this);
}