Android - используя фоновый сервис - PullRequest
0 голосов
/ 27 октября 2009

У меня есть смешанная служба IDL, которую я использую двумя способами:

  1. Служба создаст поток и выполнит сетевой вызов, чтобы получить некоторый контент XML от имени Activity. Содержимое возвращается обратно в Activity через IDL клиента, который определяет методы обратного вызова
  2. Если пользователь выбирает опцию уведомления, служба создает таймер, который выполняется неоднократно, и создает уведомление на панели инструментов. Он также кэшировал контент, поэтому, когда Activity запрашивает обновление, он подается из кэша, а не из другого сетевого вызова

Так что мои вопросы

  1. Для сценария № 1, какую цену (если таковая имеется) я плачу за использование службы для сетевых вызовов вместо создания фонового потока непосредственно в Деятельности?
  2. Для # 2 - мне лучше сменить реализацию на AlarmManager? Я заметил, что когда я убиваю процессы с помощью TasKiller, моя служба умирает и никогда не перезапускается, будет ли у задания AlarmManager-base больше шансов на восстановление?

1 Ответ

1 голос
/ 27 октября 2009

Для сценария № 1, какова цена (если любой) я плачу за использование сервиса для сетевые вызовы вместо создания фоновый поток прямо в Активность

Я предполагаю, что, поскольку вы сказали, что это "служба IDL", это то, что я называю удаленной службой - вы используете AIDL для определения интерфейса, который используется через границы процесса.

В этом случае стоимость составляет несколько МБ ОЗУ для второго процесса, плюс немного процессорного времени для накладных расходов IPC. Сколько этот «бит процессорного времени» зависит от того, как часто он вызывается.

Для № 2 - мне лучше переодеться реализация в AlarmManager?

Обычно да. В идеале сервисов в памяти должно быть как можно меньше.

Я заметил, что когда я убиваю процессы с TasKiller мой сервис умирает и никогда не будет перезапущен, будет AlarmManager-base работа получше шанс на выздоровление?

Нет, потому что приложения "убийцы задач" имеют тенденцию злоупотреблять API (по словам Дайан Хэкборн), который уничтожит все, включая запланированные тревоги. В настоящее время я не знаю надежной и эффективной защиты от «убийц задач».

...