#android
#Android
Вопрос:
Я новичок в Android studio.
После того, как пользователь закроет приложение, я пытаюсь запустить метод, который подключается к некоторому API с помощью getInputStream, затем получает текущие параметры (эти параметры постоянно обновляются) и ОТПРАВЛЯЕТ их в базу данных пользовательских таблиц.
Чтобы узнать, когда приложение закрывается, я использую onStop().
Проблема в том, что я не могу полностью завершить запуск метода, потому что приложение завершается до того, как метод завершит задачу.
В Swift я использовал в AppDelegate / applicationWillTerminate() и отложил режим ожидания на 60 секунд, чтобы я мог завершить задачу.
У вас есть какая-нибудь элегантная идея распознать, что пользователь убивает up и завершает все задачи в методе?
Спасибо и извините за мой плохой английский.
Комментарии:
1. «Чтобы узнать, когда приложение закрывается, я использую onStop()» — это на самом деле не соответствует «закрытию приложения». «У вас есть какая-нибудь элегантная идея распознать, что пользователь убивает up» — используйте
ProcessLifecycleOwner
. «и завершить все задачи в методе?» — это напрямую невозможно, поскольку Android может завершить ваш процесс в любой момент, когда он находится в фоновом режиме. Тем не менее, вы могли бы запланировать некоторую работуWorkManager
.
Ответ №1:
если эта задача срочная и вы хотите запустить ее немедленно, рассмотрите возможность использования службы переднего плана, иначе вы можете использовать WorkManager. для получения дополнительной информации проверьте это
Ответ №2:
В Android вы можете использовать службы Android для выполнения такой задачи. если ваше приложение выполняет конкретную задачу в конкретной ситуации, например, выполняет что-то при подключении к Интернету или подключении зарядки, вам необходимо использовать Work manager. Если вы хотите запускать службу вечно, вам необходимо реализовать службу переднего плана.