I 2 Aktivitäten, A & B. Der Dienst beginnt in B mit einem solchen Code:So stoppen Sie den Dienst von einer anderen Aktivität in Android?
startService(new Intent(this, PlayerService.class));
Intent connectionIntent = new Intent(this, PlayerService.class);
bindService(connectionIntent, mp3PlayerServiceConnection, Context.BIND_AUTO_CREATE);
private ServiceConnection mp3PlayerServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName arg0, IBinder binder) {
mp3Service = ((LocalBinder) binder).getService();
Thread t = new Thread() {
public void run() {
mp3Service.playSong(getApplicationContext(),url);
}
};
t.start();
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
}
};
Ich brauche eine Möglichkeit zu haben, den Dienst zu schließen, wenn ich auf die Aktivität bin A (B geschlossen ist, aber Musik spielt). Wie StopService von A onDestroy() aufrufen? Muss ich es lösen, wenn ja, wie und wo?
Einfach setzen stopService(new Intent(this,PlayerService.class));
führt zu einem Fehler: Aktivität B hat Serviceverbindung geleakt ... die ursprünglich hier gebunden wurde. (Aber B ist bereits geschlossen)
Danke, ich werde versuchen – Tramway11
startService in onCreate, bind in onStart und unbind in onStop. –
Scheint zu funktionieren, wenn nur mehrere Läufe von B und zurück zu A einige Probleme verursachen können (z. B. wurde die Verbindung nicht rechtzeitig hergestellt/unterbrochen, einige gleichzeitige Probleme). – Tramway11