В настоящее время я перезаписываю ViewModel.onCleared()
, чтобы очистить мою ViewModel для предотвращения любых утечек (в этом случае, чтобы удалить все файлы из внутреннего хранилища приложения, которые не были использованы).
Это прекрасно работает, когда деятельность ViewModel явно завершена. Но поскольку onDestroy()
не вызывается, когда приложение убито, onCleared()
не является ни тем, ни другим.
Мое намерение (на данный момент) - не сохранять какие-либо данные, я просто не хочу никаких утечек данных, ни когда система убивает мой процесс, ни когда пользователь убивает его.
Что работает
- Операция запускается, и пользователь делает снимок, который сохраняется во внутренней памяти приложения.
- Пользователь оставляет действие без сохранения.
- Операция уничтожается и вызывается
ViewModel.onCleared()
, который удаляет неиспользуемое изображение.
Что не работает (но может быть решено с помощью Activity.onSaveInstanceState()
Операция запущена, и пользователь делает снимок, который сохраняется во внутренней части приложения хранилище.
Процесс действия прекращается системой по любой причине.
Не вызывается ни Activity.onDestroy
, ни ViewModel.onCleared()
.
Что тоже не работает
- * 104 9 * Операция начинается, и пользователь делает снимок, который сохраняется во внутреннем хранилище приложения.
Пользователь убивает приложение, проводя пальцем.
Не вызывается ни Activity.onDestroy
, ни ViewModel.onCleared()
.
Боюсь, мне придется сохранить имена файлов, которые необходимо очистить, чтобы решить третий случай, но это чувствует себя очень экстремально, и я надеялся, что есть более разумный способ использования методов жизненного цикла.
Я что-то упустил?