Какое надежное место для размещения кода для выполнения до закрытия приложения для Android? - PullRequest
0 голосов
/ 29 июня 2018

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

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

У вас есть возможность создать и запустить службу и использовать метод onTaskRemoved. Подробности смотрите в этом ответе - https://stackoverflow.com/a/26882533/5909655

0 голосов
/ 29 июня 2018

https://developer.android.com/guide/components/activities/activity-lifecycle

После приостановки наступает onStop () и onDestroy. Кажется, что onStop () - это место, которое вы хотите использовать в вашем конкретном случае. Проверьте документацию выше. Если это не поможет, опубликуйте больше деталей

edit: после прочтения вашего вопроса я снова нашел возможное решение: когда вы делаете паузу вручную и не хотите отключать то, что вы можете сделать, это установить флаг, например, "STAY_ONLINE" и в onStop ()

If (flag=="STAY_ONLINE") {//do something}
else {//disconnect the user}

(Простите за форматирование, я нахожусь на телефоне:))

0 голосов
/ 29 июня 2018

Согласно документу Google, вы не можете полагаться на метод onDestroy () для достижения того, что вы пытаетесь сделать.

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

Может быть, вам лучше уточнить в вопросе, что вы хотели бы сделать и почему это нужно сделать перед закрытием приложения. Также вы можете взглянуть на WorkManager , который был только что предложен в Google IO этого года. Это гарантирует выполнение вашей задачи, даже если ваше приложение принудительно закрыто.

...