Ответ 1
Как может Служба знать, если ни одна из приложения. Действия связаны с ним?
Вы знаете, нет ли ограничений Activities
, если ваш список Observer
пуст.
У меня есть служба Android, которую я хотел бы продолжать работать даже после того, как последнее действие было вытолкнуто из стека, или Пользователь решил сделать что-то еще.
По сути Сервис слушает изменения на удаленном сервере, и я хотел бы генерировать уведомление тогда и только тогда, когда действие из приложения не работает (или видимо). Другими словами, я не хочу, чтобы уведомления возникали, когда Пользователь напрямую взаимодействует с приложением.
В случае, когда Пользователь напрямую взаимодействует с приложением, Служба уведомляет об активности и обновляет соответствующие элементы пользовательского интерфейса на основе изменений. Я планирую реализовать это через шаблон Observer.
Как служба может знать, не связаны ли какие-либо приложения с действиями?
Спасибо, J
Как может Служба знать, если ни одна из приложения. Действия связаны с ним?
Вы знаете, нет ли ограничений 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()
).