Является ли ondestroy не всегда называется?

Я поместил некоторый код очистки кеша в onDestroy моей активности, но большую часть времени код не выполняется, если я явно не закончил действие с помощью finish() .

Изменить: просто читать onDestroy вызывается только с finish() или если система невелика для ресурсов. Итак, где мне нужно поместить мой код очистки кеша? Если я поместил его в onPause() и пользователь вернется в приложение, кеш будет очищен. Я фактически храню важные временные файлы в кеше, которые не следует удалять в onPause .

Из документации разработчика Android:

protected void onDestroy ()

Добавлено в уровень API 1 Выполняйте любую окончательную очистку до того, как будет уничтожена деятельность. Это может произойти либо потому, что активность заканчивается (кто-то называется finish () на нем, либо потому, что система временно уничтожает этот экземпляр активности для экономии места. Вы можете различать эти два сценария с методом isFinishing ().

Примечание. Не считайте, что этот метод называется местом для сохранения данных! Например, если действие редактирует данные в поставщике контента, эти изменения должны быть зафиксированы либо в onPause (), либо в onSaveInstanceState (Bundle), но не здесь. Этот метод обычно реализуется для бесплатных ресурсов, таких как streamи, связанные с активностью, так что разрушенная активность не оставляет таких вещей, пока остальная часть ее приложения все еще работает. Бывают ситуации, когда система просто убивает процесс хостинга активности, не вызывая этот метод (или любые другие) в нем, поэтому его нельзя использовать для выполнения действий, которые должны оставаться вокруг после завершения процесса.

Вы можете переместить свой код на onPause() или onStop()

попробуйте использовать onstop

как это

 @Override protected void onStop() { super.onStop(); //write your code here } 

ondestroy чаще всего вызывается, когда система полностью удаляет активность из памяти или когда пользователь убивает активность, вы хотите сохранить свои данные в режиме паузы, так как это всегда будет вызываться перед уничтожением.

  • загружать изображение и аудио в один запрос в android
  • Как использовать оболочку ADB при подключении нескольких устройств? Ошибка с «ошибкой: более одного устройства и эмулятора»
  • Как я могу получить данные с веб-сервера в приложении Android?
  • Пользовательский фильтр ArrayAdapter в ListView
  • Карта не попадает в эмулятор android api v2
  • Android-как я могу преобразовать объект android.net.Uri в объект java.net.URI?
  • Как убить текущую задачу в android
  • Автономный режим для Android-приложения с использованием карт google api
  • Как сохранить изображения с помощью sharedpreference в android?
  • как я могу получить случайную базу данных Firebase
  • Android, как определить элемент в списке с помощью флажка
  • Давайте будем гением компьютера.