Я создаю приложение, которое будет контролировать состояние батареи, подключение к Wi-Fi и данные о местоположении через равные промежутки времени и записывать результаты в файл (а затем отправлять их на сервер). При установке мониторинга приложения необходимо отключить, но пользователь, которому он нужен, должен пережить перезагрузку. После большого чтения я понял, что у меня есть в основном 2 варианта:Android-дизайн: работа в фоновом режиме или AlarmManager?
- Подкласс
Service
и уволить его от моей деятельности. Установите его на переднем плане, STICKY, а что нет и надейтесь, что он не будет убит андроидом - и позаботьтесь, если андроид воссоздает его (на самом деле должно быть 3 службы, поэтому синхронизация между ними может быть беспорядочной). Запустите нить в сервисе (нет необходимости в Executors, я думаю) и получите ееThread.sleep(REGULAR_INTERVAL)
. Просыпайтесь, собирайте данные, записывая их в файл. Передавайте собранную информацию и показывайте ее в моей деятельности, если она работает (которая будет зарегистрирована широковещательным приемником). Промыть и повторитьwhile(true)
. У вас есть способ прервать это - У меня зарегистрирована активность PendingIntent с AlarmManager, которая будет запускать каждый REGULAR_INTERVAL. Я так долго не рассматривал технические детали этого подхода, но я надеюсь, что смогу сделать этот PendingIntent созданным и запущенным IntentService (похоже, это так, как надо), имея бесплатный механизм Thread, а также закрытие само по себе). Некоторый скелетный код для этого подхода будет приветствоваться.
Я думаю, что мне нужно зарегистрировать загрузочный приемник в обоих случаях, чтобы проверить Общие настройки (уже сделали это), и в случае, если 1 запустит сервис (ы), а в случае, если 2 зарегистрировать приемник для события тревоги и установите диспетчер аварийных сообщений вверх - это часть, в которой мне нужен какой-то скелетный код.
Итак - прежде чем я начну строить это - что было бы предпочтительным подходом?
В recap - приложение должно отслеживать некоторые свойства телефона и записывать их в файл до тех пор, пока пользователь не захочет его отключить.
Ваших пользователи будут, вероятно, убьют вас, если вы держите 'живой постоянно осушение батареи' обслуживания своего телефона только для сбора данных купольных через определенные промежутки времени. Используйте второй подход, используя «IntentService» с дополнительными WakeLocks, если это необходимо (посмотрите на «WakefullIntentService» CommonsWare). – Luksprog
@Luksprog: спасибо - мне нужны замки? в широковещательном приемнике, который получит сигнал тревоги (все еще глядя, как именно это должно быть реализовано)? –
Почему отрицательный голос? –