Хорошим решением будет включать в себя такую логику в методе onPause()
. Он всегда будет называться во всех ситуациях. Это то, что говорит документация разработчика:
Вы должны использовать метод onPause() для записи любых постоянных данных (например, прав пользователя) на хранение.
Одна вещь, которую вы должны иметь в виду, заключается в том, что этот метод можно назвать более частым, чем желательно, например, когда загорается экран (некоторые из них имеют 15 секундных тайм-аутов экрана). Таким образом, вы не должны вводить слишком много дорогостоящих операций внутри.
Что касается нажатия кнопки «домой», рекомендуется сохранить данные (по адресу onPause()
). Причина в том, что ваша деятельность находится в фоновом режиме, но может быть уничтожена. Система может уничтожить работу, если ей необходимо восстановить память. (Например, вы начинаете тоже любые другие приложения, после этого и поместить их все в фоновом режиме) Из документации:
Stopped
: Активность полностью скрыта другая деятельность ( деятельности в настоящее время в «фоновом режиме») , Остановленное действие также остается alive (объект Activity
сохраняется в памяти, он поддерживает все данные и информацию о пользователе , но не прикреплен к окну менеджер). Тем не менее, он больше не виден пользователю, и он может быть убит системой, когда требуется память в другом месте.