Intereting Posts
Как включить автоматическое создание ярлыков после загрузки и установки приложений с Android Market? Как подписать уже скомпилированный APK Сбой при анимации вложенных представлений в совместно используемом элементе Переход активности? Анимация высоты контейнера LinearLayout с помощью ValueAnimator Android Proguard не удаляет все сообщения журнала Как распространять файлы apk для моих друзей? Список всех установленных сертификатов на Android Не может увеличить внутреннее хранилище эмулятора Android Android: NeighboringCellInfo всегда пуст!? Зачем? При рисовании вне рамки клипа просмотра с Android: как я могу предотвратить недоразвитие представлений от рисования поверх моего пользовательского представления? Android-кеширование изображений – как? GetLastKnownLocation возвращает NULL Что делает synchronized () / wait () / notifyAll () в Java? Как установить цвет для изображения в Android Ошибка INSTALL_FAILED_DEXOPT в Android 5.0 в режиме Release

Как может Служба Android знать, что она не связана с какой-либо деятельностью

У меня есть Android-сервис, который я хотел бы продолжать работать даже после того, как последнее действие было вытолкнуто из стека, или Пользователь решил сделать что-то еще.

По сути Сервис слушает изменения на удаленном сервере, и я хотел бы генерировать уведомление, если и только если действие из приложения не работает (или видимо). Другими словами, я не хочу, чтобы уведомления появлялись, когда Пользователь напрямую взаимодействует с приложением.

В случае, когда Пользователь напрямую взаимодействует с приложением, Служба уведомляет об активности и обновляет соответствующие элементы пользовательского интерфейса на основе изменений. Я планирую реализовать это через шаблон Observer.

Как служба может узнать, не связаны ли с ней какие-либо приложения?

Спасибо, J

Solutions Collecting From Web of "Как может Служба Android знать, что она не связана с какой-либо деятельностью"

Как служба может узнать, не связаны ли с ней какие-либо приложения?

Вы знаете, нет ли связанных Activities если ваш список Observer пуст.

Вам нужно использовать логическое значение с методами onBind, onUnbind и onRebind:

 public boolean bound; @Override public Binder onBind(Intent intent){ bound = true; return myBinder; //declare and init your binder elsewhere } @Override public boolean onUnbind(Intent intent) { bound = false; return true; // ensures onRebind is called } @Override public void onRebind(Intent intent) { bound = true; } 

OnUnbind вызывается только тогда, когда все клиенты отключены. Таким образом, привязка останется верной, пока все клиенты не отключится.

** ПРИМЕЧАНИЕ. Отредактировано на основе отзывов от Gil. **

Я не могу комментировать ответ SharkAlley, поэтому я переиглюсь здесь.

К сожалению, onBind () не вызывается каждый раз, когда клиент подключается. См. Например, ответ миссис Хакборн: https://groups.google.com/d/msg/android-developers/2IegSgtGxyE/iXP3lBCH5SsJ

Возможное решение – вернуть true из onUnbind() и установить флаг в true как на onBind() и onRebind() (и false на onUnbind() ).