Вопрос

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

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

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

    Решение

      

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

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

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

      

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

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

      

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top