Тревога срабатывает каждые 5 секунд с AsyncTask и Сервисом, проверяющим порог - PullRequest
0 голосов
/ 26 апреля 2011

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

Пока что я использую подход из книги Wrox по профессиональной разработке приложений для Android 2, в которой говорится, что для обновления данных используются AlarmManager и AsyncTask. http://www.wrox.com/WileyCDA/WroxTitle/Professional-Android-2-Application-Development.productCd-0470565527,descCd-DOWNLOAD.html -> Примеры проектов -> Глава 9 Землетрясение 4

Это то, что я имею до сих пор:

  1. Activity.onCreate запускает службу

  2. Метод onCreate из запущенного сервиса устанавливает параметры Alarm с PendingIntent (пока не запускает его).

  3. onStartCommand запущенной службы создает аварийный сигнал и создает AsyncTask (с выполнением)

  4. AsynchTask.doInBackground выполняет некоторые вычисления и, если порог был пройден, передает новое намерение и пытается остановить сигнал тревоги, если порог не пройден, то ничего не делается.

  5. Служба остановлена ​​из onPostExecute AsyncTask.

  6. Метод onReceive в BroadcastReceiver обрабатывает PendingIntent из 2) и запускает службу следующим образом:

    Intent startIntent = new Intent (context, MyService.class);

    context.startService (startIntent);

Прямо сейчас Тревога не останавливается, и я не совсем уверен, что это лучшая архитектура для удовлетворения такого рода потребностей, каким опытом вы можете поделиться? Я знаю о других опциях, таких как IntentService, Использование обработчиков, Таймеры, но это тоже чистый способ, но ... Его производительность высока? С уважением. Гильермо.

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

посмотрите на этот класс в Java

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html

Я думаю, вы можете использовать !!

0 голосов
/ 26 апреля 2011

Используя PendingIntent, который позволяет вам запустить ваш Alarm, вы можете вызвать cancel () в AlarmManager, и он остановится.

...