Intereting Posts
Android: Как я могу проверить, реализовано ли устройство с функциями Camera2 api или нет? Android Gradle Добавление статической библиотеки Android-массив со всеми странами на разных языках Ошибка получения родительского элемента: не найден ресурс, который соответствует указанному имени '@android: style / TextAppearance.Holo.Widget.ActionBar.Title' Прокручивание направления в ViewPager FusedLocationApi.getLastLocation всегда null Метод фабрики фрагментов Android и перегрузка конструктора Измените цену покупки в приложении после публикации Android: активность не найдена на некоторых устройствах при попытке открыть локальный HTML-файл в браузере Не удается разрешить символ @ drawable / ic_launcher StartActivity, создающий новый экземпляр Activity каждый раз Пользовательский конвертер для дооснащения Как загрузить файл на Google Диск Firebase Android: событие onDataChange () всегда выполняется в главном потоке пользовательского интерфейса? Почему на Android 5 (Lollipop) можно напрямую изменять виды пользовательского интерфейса из других потоков?

Связывание службы с 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 для синхронизации этих состояний.