Связывание службы с android.app.Activity vs привязка ее к android.app.Application

Есть ли какая-либо принципиальная разница в привязке службы к android.app.Activity и привязка ее к android.app.Application . Я хочу привязать службу к Application потому что я хочу сохранить некоторое глобальное состояние / данные в приложении вместо того, чтобы дублировать его во всех моих действиях .

Благодарю.

Solutions Collecting From Web of "Связывание службы с android.app.Activity vs привязка ее к android.app.Application"

Нет. Нет принципиальной разницы.

Тем не менее, subclassing android.app.Application – очень хорошее место для хранения данных глобального / состояния. Существует только один экземпляр, и все, что происходит от Context, имеет к нему доступ.

Я также уверен, что привязка службы к приложению приведет к некоторым нечетным срокам жизни, если вы не будете осторожны. Я имею в виду, что даже если ваше приложение скрыто из виду и не имеет активности, ваше приложение все еще может существовать, потому что ваше обслуживание все еще существует. Ваш сервис по-прежнему существует, поскольку ваше приложение все еще существует. Вам придется вручную отключить службу на основе какого-либо события, кроме onDestroy.

Ответ @ Jere.Jones не на 100% правильный. У вас есть один экземпляр класса приложения для каждого процесса. Поэтому, если вы запускаете свою службу в отдельном процессе, например, с помощью

  <service android:name=".engine.NetworkService" android:exported="false" android:process=":xxxService" /> 

У вас есть два отдельных экземпляра Appliaction, что означает, что если вам нужно «удерживать состояние», вы должны убедиться, что это либо не пересечение процесса, либо вам нужно использовать IPC для синхронизации этих состояний.