У меня есть приложение, которое имеет функцию А, которая должна запускаться в фоновом режиме каждую минуту. Функция A заключается в том, что приложение должно подключаться к базе данных, читать некоторые данные, затем получать текущее местоположение устройства и на их основе проверять условие, если условие выполняется, оно должно отправлять пользователю уведомление в строке состояния, чтобы, когда пользователь при нажатии на уведомление отобразится пользовательский интерфейс приложения, и что-то произойдет.
Эта фоновая задача должна выполняться постоянно каждую минуту, независимо от того, используется ли приложение, закрыто или прекращено (например, Facebook или WhatsApp, которые показывают нам уведомления, независимо от того, находятся они в стеке приложения или нет).
Теперь я искал и обнаружил, что Android предлагает планировщик заданий,фоновую службу, AlarmManager и обработчики.
Но чем больше я читаю о них, тем более противоречивыми кажутся мне высказывания.
- Об обработчиках я читал, что они не существуют для длительных задержек и будет прекращен после перезагрузки системы. Так они не будут подходит для моей задачи.
- Но AlarmManager, по-видимому, является хорошим кандидатом для решения этой проблемы, поскольку, если разрешено, они существуют даже после перезагрузки системы и могут перезапустите приложение. Но в Android-документации, что будильник Диспетчер предназначен для использования в задачах, которые должны быть запущены на конкретное время (например, будильник). Но моя задача должна быть выполнена каждую минуту.
- Тогда есть Фоновая служба. Это больше для задач, таких как загрузка в фоновом режиме, как я прочитал, и не предназначен для делать то, что я объяснил.
- Кажется, что JobScheduler предназначен не для задачи, которая должна выполняться постоянно, а для задач, которые удовлетворяют определенному ограничению, например простаивает или нет сети... Так что же из этих (или других, если они существует) вы рекомендуете использовать для задачи, которую я объяснил в первом часть