Дизайн Android: фоновый длительный сервис или AlarmManager?

Я создаю приложение, которое будет следить за состоянием батареи, Wi-Fi-соединением и данными о местоположении через равные промежутки времени и записывать результаты в файл (а затем отправлять их на сервер). При установке приложения мониторинг должен быть отключен - но пользователь, включающий его, должен пережить перезагрузку. После долгих чтений я понял, что у меня есть 2 варианта:

ПодклассService и уволить его от моей деятельности. Установите его на передний план, прилипайте, а что нет, и надейтесь, что он не будет убит андроидом, и позаботьтесь, если андроид его воссоздает (на самом деле должно быть 3 сервиса, поэтому синхронизация между ними может быть грязной). Запустите тему в сервисе (я полагаю, нет необходимости в исполнителях) и получите ееThread.sleep(REGULAR_INTERVAL), Проснись, собери данные запиши их в файл. Передайте собранную информацию и отобразите ее в моей активности, если она будет запущена (для которой будет зарегистрирован Broadcast Receiver). Промыть и повторитьwhile(true), Есть способ прервать этоПусть моя активность зарегистрирует PendingIntent с AlarmManager, который будет запускаться каждый REGULAR_INTERVAL. У меня нетЯ так много изучал технические детали этого подхода, но я надеюсь, что смогу заставить PendingIntent создать и запустить IntentService (похоже, так и есть - иметь бесплатное ПО Thread, а также отключаться самостоятельно). ). Некоторый скелетный код для этого подхода приветствуется.

Я думаю, что мне нужно зарегистрировать загрузочный приемник в обоих случаях, чтобы проверить общие настройки (уже сделали это) и в случае 1 запустить сервис (ы), в то время как в случае 2 зарегистрировать приемник для события тревоги и настроить диспетчер тревоги - это та часть, в которой мне нужен скелетный код.

Итак, прежде чем я начну это строить, какой подход предпочтительнее?

Напомним, что приложение должно отслеживать некоторые свойства телефона и записывать их в файл, пока пользователь не решит отключить его.

Ответы на вопрос(3)

Ваш ответ на вопрос