使用ViewModel-Savedstate保存数据,杀掉后台重新打开app,数据丢失,加入依赖是最新的,请问是哪里的问题?
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1'
MyViewModel
package com.example.viewmodelsavedstate;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.SavedStateHandle;
import androidx.lifecycle.ViewModel;
public class MyViewModel extends ViewModel {
private SavedStateHandle handle;
public MyViewModel(SavedStateHandle handle) {
this.handle = handle;
}
public MutableLiveData<Integer> getNumber(){
if (!this.handle.contains(MainActivity.KEY_NUMBER)){
this.handle.set(MainActivity.KEY_NUMBER, 0);
}
return this.handle.getLiveData(MainActivity.KEY_NUMBER);
}
public void add(){
if (getNumber().getValue() != null){
this.getNumber().setValue(this.getNumber().getValue() + 1);
}
}
}
MainActivity
package com.example.viewmodelsavedstate;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.SavedStateViewModelFactory;
import androidx.lifecycle.ViewModelProvider;
import android.os.Bundle;
import android.util.Log;
import com.example.viewmodelsavedstate.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding binding;
MyViewModel myViewModel;
public final static String KEY_NUMBER = "my_number";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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);
}
}