У меня проблема с сохранением связанных данных действия.Некоторые очистители памяти (такие как clean master), а также GC некоторых устройств, похоже, удаляют все данные и связанные данные из действия и соответствующего ViewModel, вызывая сбой действия.
Мой вопрос : есть ли способ хранения данных (обычно передаваемых через пакет), необходимых для загрузки действия?
Я пытался найти решение, чтобы попытаться сохранить данные с помощью onSavedInstanceState
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(BUNDLE_ARGUMENT_CUSTOMER_ID, this.mViewModel.getCustomer().getId());
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
this.mViewModel.setCustomer(new Customer(savedInstanceState.getInt(BUNDLE_ARGUMENT_CUSTOMER_ID, -1)));
}
}
А также полагаться на ViewModel, чтобы сохранить данные, ни один из которых не работал.Однако пока единственное решение, которое действительно работает, - это сохранение данных в локальном хранилище (с использованием SharedPreference или InternalStorage ), которые открывают некоторые другие проблемы дополнительного управления данными.Даже после сохранения данных эффект приложения такой, как если бы произошел сбой при навигации по заднему стеку.