Я пишу приложение, которое должно выполнять какую-то работу каждые 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
Это то, что я имею до сих пор:
Activity.onCreate запускает службу
Метод onCreate из запущенного сервиса устанавливает параметры Alarm с PendingIntent (пока не запускает его).
onStartCommand запущенной службы создает аварийный сигнал и создает AsyncTask (с выполнением)
AsynchTask.doInBackground выполняет некоторые вычисления и, если порог был пройден, передает новое намерение и пытается остановить сигнал тревоги, если порог не пройден, то ничего не делается.
Служба остановлена из onPostExecute AsyncTask.
Метод onReceive в BroadcastReceiver обрабатывает PendingIntent из 2) и запускает службу следующим образом:
Intent startIntent = new Intent (context, MyService.class);
context.startService (startIntent);
Прямо сейчас Тревога не останавливается, и я не совсем уверен, что это лучшая архитектура для удовлетворения такого рода потребностей, каким опытом вы можете поделиться?
Я знаю о других опциях, таких как IntentService, Использование обработчиков, Таймеры, но это тоже чистый способ, но ... Его производительность высока?
С уважением. Гильермо.