Самый простой способ общаться легко и без плотного соединения кода приложения, попробуйте использовать events
. Мое избранное: EventBus - android library
. Вот как вы можете это сделать:
Добавьте это в build.gradle
файл (модуль уровня)
compile 'org.greenrobot:eventbus:3.0.0'
Далее создайте Plain Old Java Object
(POJO), чтобы представить ваше мероприятие!
public class ServiceConnectedEvent{
private boolean isServiceConnected;
ServiceConnectedEvent(boolean isConnected){
this.isServiceConnected = isConnected;
}
public boolean isServiceConnected{
return this.isServiceConnected;
}
}
Далее, в службе, которая будет выступать в качестве publisher
, опубликовать событие так:
EventBus.getDefault().post(new ServiceConnectedEvent(true));
Теперь в классе, который вы хотите уведомить о состоянии подключения услуги, вы можете зарегистрировать его, чтобы сделать его subscriber
так:
EventBus.getDefault().register(this);
чтобы действительно получить уведомление в своем классе, добавьте этот метод:
public void onEvent(ServiceConnectedEvent event){
if(event.isServiceConnected()){
//do what you need when service is connected
}
}
Помните, что вы можете вернуть все, что хотите, как переменную по вашему выбору!
Если вы находитесь внутри деятельности или фрагмента, вы можете unregister
события внутри onDestroy
:
@Override
public void onDestroy(){
super.onDestroy();
EventBus.getDefault().unregister(this);
}
Это должно сделать вашу связь между вашим сервисом и любым другим классом легко !!
Надеюсь, вы получите его работу - удачи и счастливого кодирования!
Отредактировано с помощью небольшого примера, иллюстрирующего то, что я пытался сказать. – h3X3n