Verständnisfrage: RemoteServices

  • 1 Antworten
  • Letztes Antwortdatum
U

Unicate

Erfahrenes Mitglied
57
Hallo alle zusammen!

Ich habe ein paar Verständnisfragen zum Thema RemoteServices. Ich dachte das ich da durchsehen würde, dem ist anscheinend aber nicht so.

Den Fall den ich zu bearbeiten habe:

Ich habe eine Applikation die aus mehreren Activities besteht.
2 dieser Activities müssen mit einem Service kommunizieren und Callbacks von diesem entgegen nehmen können.

Dazu binde ich die Activities mit ...
Code:
_context.bindService(_remoteIntent, _connection, Context.BIND_AUTO_CREATE);
... im onResume an den Service und unbinde die Activity mit ...

Code:
_context.unbindService(_connection);
... vom Service.

Dazu gibt es eine ServiceConnection welche in der Activity implementiert wird:
PHP:
private ServiceConnection _connection = new ServiceConnection() {        
    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        try {
            _service.unregisterCallback();
        } catch (Exception e) {
            e.printStackTrace();
        }
        _service = null;
    }
    
    @Override
    public void onServiceConnected(ComponentName className, IBinder service) {
        _service = BackgroundServiceConnector.Stub.asInterface(service);
        try {
            _service.registerCallback(_callback);                
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
};
Der Service selbst implementiert 2 Methoden namens "onBind" und "onUnbind", welche ich beide mit einer einfache Ausgabe versehen habe.

Was ich dachte was nun passiert:
=========================
Ich verbinde meine Activity A mit dem Service.(Ausgabe erfolgt)
Eine User-Interaktion startet Activity B
Wenn die Activity A "onPause" aufruft unbinde ich den Service. (Ausgabe erfolgt)
Ich verbinde Activity B mit dem Service.(Ausgabe erfolgt nur in meiner Theorie) Und nur Activity B kann jetzt Callback von dem Service empfangen.


Was tatsächlich passiert:
===================
Ich verbinde meine Activity A mit dem Service.(Ausgabe erfolgt)
Eine User-Interaktion startet Activity B
Wenn die Activity A "onPause" aufruft unbinde ich den Service (Ausgabe erfolgt).
Ich verbinde Activity B mit dem Service.(keine Ausgabe!?) Der Callback wird registriert (siehe ServiceConnection#onServiceConnected) aber die Methode "onBind" wird nicht aufgerufen.
Wenn ich nun über den Zurück-Button in die vorherige Activity zurückwechsele erfolgt auch keine Ausgabe (welche von "onUnbind" kommen sollte)


Hier meine Frage wann wird eigentlich welche Methode aufgerufen?
Damit meine ich speziell die Methoden:
Service#onBind
Service#onUnbind
ServiceConnection#onServiceConnected
ServiceConnection#onServiceDisonnected

Gibt es dazu evtl. irgendwo ein Diagramm o.ä. damit das verständlich wird?
 
Hat dein onUnbind 'nen Rückgabewert?

onRebind:
Called when new clients have connected to the service, after it had previously been notified that all had disconnected in its onUnbind(Intent). This will only be called if the implementation of onUnbind(Intent) was overridden to return true.
 
Zurück
Oben Unten