как структурировать мое приложение для запуска в фоновом режиме - PullRequest
3 голосов
/ 05 января 2010

Я новичок в Android, и мне нужно несколько советов для запуска.
Я хочу создать приложение, которое будет отображаться, когда пользователь попадет в горячую ситуацию.

Под горячей ситуацией я подразумеваю:

  • координаты GPS / ячейки находятся в известной зоне;
  • обнаружено Bluetooth-устройство;
  • обнаружена известная сеть Wi-Fi;
  • информация о погоде изменилась;

Я вижу, что что-то работает в фоновом режиме, и когда одно из пунктов срабатывает, оно запускает и открывает приложение.

  • Как начать?
  • Как мне убедиться, что мое приложение не будет закрыто?

Когда я где-то читал, что ОС Android будет завершать работу приложений, если нехватка памяти происходит или потребляет слишком много, а мое приложение будет потреблять много, повторяя измерения / проверки, чтобы увидеть, изменилась ли ситуация.

С уважением,
Pentium10

Ответы [ 2 ]

2 голосов
/ 05 января 2010

Вам нужно использовать Service для части вашего приложения, которая работает в фоновом режиме.

Может оказаться полезным 1005 * Основы приложений в документации для разработчиков Android . Это говорит об услугах:

Служба не имеет визуального пользовательского интерфейса, а работает в фоновом режиме в течение неопределенного периода времени. Например, служба может воспроизводить фоновую музыку, когда пользователь занимается другими делами, или она может извлекать данные по сети или вычислять что-либо и предоставлять результат для действий, которые в этом нуждаются.

В вашем случае вам может пригодиться LocationManager Сервис . Это системная служба, которую вы можете использовать для уведомления вашего приложения на основе позиции GPS.

Тем не менее, я думаю, вам придется написать свои собственные службы для мониторинга Wi-Fi, Bluetooth и погоды.

Вы можете использовать Службу AlarmManager , чтобы заставить вашу Службу выполнять определенные задачи через определенные промежутки времени.

0 голосов
/ 05 января 2010

Это зависит от того, как и где вы хотите развернуть свое приложение.По моему опыту, это сводится к

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

В случае 1) просто создайте один сервис, который активно опрашивает датчики / веб-сервисы.Используйте AlarmManager для отправки намерения REFRESH (AlarmService.setRepeating(...) ).

Это намерение REFRESH будет перезапускать службу синхронизации каждый раз, даже если она была уничтожена системой.onStart () будет вызываться каждый раз при отправке намерения REFRESH.Вы можете выполнить сложную логику установки в onCreate (), так как она будет вызываться при каждом создании службы после ее уничтожения.ВНИМАНИЕ: Это может привести к очень быстрому разряду батареи.

В случае 2) Я бы создал несколько служб и позволил бы пользователю настраивать разные интервалы опроса для каждой службы, чтобы ограничить разрядку батареи.Я могу видеть, например, что Bluetooth должен опрашиваться более регулярно, чем GPS, так как более вероятно, что устройство Bluetooth внезапно появляется, чем пользователь, перемещающийся очень быстро.

Погода звучит очень дорого (поиск в сети, возможно, запускает сетевое соединение!)

Пожалуйста, не пытайтесь быть слишком настойчивыми с вашим приложением в случае 2).Обычно для телефона имеет смысл отключать службы памяти и питания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...