U
Unicate
Erfahrenes Mitglied
- 57
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.
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
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:
"Service disconnected" wird nie ausgegeben...
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, _connection, Context.BIND_AUTO_CREATE);
} else {
startService();
connect();
}
}
private void startService() {
_context.startService(_remoteIntent);
_isRunning = true;
}
Das funktioniert auch soweit.
Mein Problem ist mit der Methode disconnect
PHP:
public void disconnect() {
_context.unbindService(_connection);
}
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 className, IBinder 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: