要在Android Studio中保存活动状态,可以使用以下方法:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("key", value); // 保存需要的状态数据
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
value = savedInstanceState.getString("key"); // 恢复保存的状态数据
}
@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor editor = getPreferences(Context.MODE_PRIVATE).edit();
editor.putString("key", value); // 保存需要的状态数据
editor.apply();
}
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
value = prefs.getString("key", defaultValue); // 恢复保存的状态数据
}
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0"
然后在活动中创建一个ViewModel类:
public class MyViewModel extends ViewModel {
private MutableLiveData data = new MutableLiveData<>();
public void saveData(String value) {
data.setValue(value);
}
public LiveData getData() {
return data;
}
}
在活动中使用ViewModel保存和恢复状态:
private MyViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = new ViewModelProvider(this).get(MyViewModel.class);
viewModel.getData().observe(this, new Observer() {
@Override
public void onChanged(String value) {
// 更新UI
}
});
}
@Override
protected void onPause() {
super.onPause();
viewModel.saveData(value); // 保存需要的状态数据
}
这些方法可以根据需要选择使用,根据活动的复杂性和数据量来决定使用哪种方法。
上一篇:保存活动 - Android
下一篇:保存活动状态中的UI元素