1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Verständnisfrage: RemoteServices

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Unicate, 24.02.2012.

  1. Unicate, 24.02.2012 #1
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    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 classNameIBinder 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?
     
  2. sixi, 25.02.2012 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    Hat dein onUnbind 'nen Rückgabewert?

    onRebind:
     

Diese Seite empfehlen