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

Verbindung Activity -> Service abbrechen

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 eine Activity, die sich bei Start mit einem Remote Service verbindet.
    Das passiert in meinem sogenannten BackgroundManager. Dieser hat eine public Method, welche ich connect() nannte.
    connect soll prüfen ob der Service bereits läuft (über die statische Variable _isRunning). Wenn nicht, soll der Service erstellt werden und dann erneut verbunden werden.

    PHP:
    public void connect() {        
        if(
    _isRunning) {
            if(
    null == _service)
                
    _context.bindService(_remoteIntent_connectionContext.BIND_AUTO_CREATE);
        } else {
            
    startService();
            
    connect();
        }
    }
    private 
    void startService() {        
        
    _context.startService(_remoteIntent);
        
    _isRunning true;
    }
    Ich rufe die Methode connect im "onResume" der Activity auf und er verbindet sich wie gewollt. (Die implementierte Methode des Interfaces ServiceConnection "onServiceConnected" wird erfolgreich aufgerufen)
    Das funktioniert auch soweit.

    Mein Problem ist mit der Methode disconnect
    PHP:
    public void disconnect() {
        
    _context.unbindService(_connection);
    }
    Die Methode "disconnect" rufe ich in der Methode "onPause" der Activity auf. Leider wird hier nie die Methode "onServiceDisconnected" des ServiceConnection-Interfaces aufgerufen.

    Was mach ich falsch?

    [Edit:]

    Hier mal die ServiceConnection:
    PHP:
    private ServiceConnection _connection = new ServiceConnection() {        
        @
    Override
        
    public void onServiceDisconnected(ComponentName arg0) {
            
    Log.d(TAG"Service disconnected!");            
            try {
                
    _service.unregisterCallback();
            } catch (
    Exception e) {
                
    e.printStackTrace();
            }
            
    _service null;
        }
        
        @
    Override
        
    public void onServiceConnected(ComponentName classNameIBinder service) {
            
    _service BackgroundServiceConnector.Stub.asInterface(service);
            
    Log.d(TAG"Service connected!");
            try {
                
    _service.registerCallback(_callback);                
            } catch (
    Exception e) {
                
    e.printStackTrace();
            }
        }
    };
    "Service disconnected" wird nie ausgegeben...
     
    Zuletzt bearbeitet: 24.02.2012

Diese Seite empfehlen