Я пишу приложение, которое должно выполнять некоторую работу каждые 5 секунд, если эти вычисления превышают пороговое значение, следует запустить Intent, который загрузит новую активность (или, возможно, если это возможно, активность будет запущена самим процессом) .
До сих пор я использовал подход, описанный в книге Professional Android 2 Application Development от Wrox, в которой говорится, что для обновления данных используются 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) и запускает службу следующим образом:
Намерение startIntent = новое намерение (контекст, MyService.class);
контекст.startService(startIntent);
Прямо сейчас Alarm не останавливается, и я не совсем уверен, что это лучшая архитектура для удовлетворения таких потребностей. Можете поделиться опытом? Я знаю о других вариантах, таких как IntentService, Usage of Handlers, Timers, но это тоже чистый способ, но... Высокая ли его производительность? Наилучшие пожелания. Гильермо.