Der einfachste Weg, nahtlos zu kommunizieren und ohne fest Anwendungscode zu koppeln, versuchen events
verwenden. Mein Favorit ist EventBus - android library
. Hier ist, wie Sie können dies tun:
Fügen Sie diese auf Ihre build.gradle
Datei (Modulebene)
compile 'org.greenrobot:eventbus:3.0.0'
Als nächstes erstellen Plain Old Java Object
(POJO) Ihre Veranstaltung zu vertreten!
public class ServiceConnectedEvent{
private boolean isServiceConnected;
ServiceConnectedEvent(boolean isConnected){
this.isServiceConnected = isConnected;
}
public boolean isServiceConnected{
return this.isServiceConnected;
}
}
nächstes in Ihrem Dienst, der als publisher
, schreiben Sie eine Veranstaltung wie diese handeln:
EventBus.getDefault().post(new ServiceConnectedEvent(true));
Jetzt, in der Klasse, die Sie von Dienstverbindungsstatus informieren möchten, können Sie registrieren sie es ein subscriber
wie diese zu machen:
EventBus.getDefault().register(this);
tatsächlich um die Benachrichtigung in Ihrer Klasse zu erhalten, fügen sie diese Methode:
public void onEvent(ServiceConnectedEvent event){
if(event.isServiceConnected()){
//do what you need when service is connected
}
}
Denken Sie daran, dass Sie alles zurückgeben können, was Sie wollen, wie eine Variable Ihrer Wahl!
Wenn Sie in einer Aktivität oder ein Fragment sind, können Sie das Ereignis innerhalb onDestroy
unregister
:
@Override
public void onDestroy(){
super.onDestroy();
EventBus.getDefault().unregister(this);
}
Dies sollte Ihre Kommunikation zwischen Ihrem Service und jede andere Klasse einfach machen !!
Ich hoffe, dass es funktioniert - viel Glück und gute Programmierung!
Bearbeitete es mit einem kleinen Beispiel, das illustriert, was ich sagen wollte. – h3X3n