Intereting Posts
Способ приостановки эмулятора Android? Проблема создания виртуального устройства Android (AVD) на Ubuntu 16.04 Android: разница между ACTION_UP и ACTION_POINTER_UP ImageView заполняет ширину или высоту родителя, но поддерживает соотношение сторон Как я могу предотвратить «убить» приложение или службу Android из диспетчера задач? Загрузите видео в реальном времени на веб-камеру Android на сервер RTP / RTSP TextInputLayout не имеет никакого эффекта для программной подсказки в EditText Не удалось включить аппаратные кнопки AVD Ошибка приложения. Это каталог (файл: ///#android_asset/www/index.html) Обновление диалога прогресса в Activity из AsyncTask Как прокрутить edittext внутри прокрутки Как установить изображение из url для imageView Как обновить содержимое вкладки фрагментов при нажатии кнопки Назначьте ширину до половины ширины доступного экрана декларативно Как скрыть клавиатуру после ввода в EditText в android?

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