2017-03-24 2 views
0

ich einen Dienst am Instanziierung wie folgt:Android-Service onBind Methode abgestanden Absicht Empfang

try { 
     Intent intent = new Intent(this, SOMEService.class); 
     intent.putExtra("key", SOME UUID); 
     startService(intent); 
     bindService(intent, myServiceConnection, Context.BIND_AUTO_CREATE); 
    } catch (Exception e) { 

    } 

in meinem Dienst des onBind Methode, überprüfe ich, ob die mitgelieferten Schlüssel den erwarteten Schlüssel in den Dienst übereinstimmt. Dieser Schlüssel wird bei jeder Transaktion aktualisiert.

Das Problem ist, wenn ich die App schließe und sie wieder öffne (zwingt den Dienst zu binden), danach erhält die onBind-Methode die vorherige Absicht mit dem veralteten Schlüssel und nicht die neuere Absicht mit dem neuen Schlüssel.

Irgendwelche Ideen, warum das passieren kann?

Antwort

1

Wenn Sie den Dienst starten, wird er unabhängig ausgeführt und neu gestartet, selbst wenn Android ihn aufgrund von Ressourcenmangel stoppt. Wenn Sie also die App schließen, wird der Dienst weiter ausgeführt - Sie werden nur darauf zugreifen. Wenn Sie möchten, dass Ihr Dienst nur ausgeführt wird, wenn die App geöffnet ist, beenden Sie ihn, wenn die App geschlossen wird, und starten Sie ihn erneut.

+0

als Jetzt habe ich die onStartCommand-Methode meines Dienstes überschrieben, um das START_NOT_STICKY-Flag zurückzugeben. Das hat das Problem behoben. Obwohl auf lange Sicht sollte ich einen Weg finden, meinen Dienst korrekt zu stoppen. –

Verwandte Themen