In meiner App verwende ich einen Hintergrund-Service, um einige Hintergrunddaten abrufen. Ich starte den DienstAktivität und Binder-Service
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
mConnection verwendet, ist Instanz von ServiceConnection.
Im Dienst ich holen einige Daten und überprüfen Sie es, und wenn der Scheck besteht Ich einen Ton.So, wenn dies passiert Benutzer kann eine STOP-Taste auf dem Aktivitätsbildschirm drücken.Dies würde aufrufen lösen (mConnection), die zerstören würde der Dienst, bei dem ich den Ton stoppe. Meine Abfrage ist, dass während der Dienst im Hintergrund ausgeführt wird, und unterdessen Android die Aktivität beendet, dann wie Benutzer den Dienst stoppen kann. Ich brauche mConnection, um den Dienst zu lösen, und ich kann nicht mConnection in Bundle in onSaveInstanceState speichern.
Wäre es nicht besser, einen IntentService und einen Broadcast-Empfänger (startService-Aufruf) als einen gebundenen Dienst zu verwenden, da es sich nur um eine bestimmte Hintergrundaufgabe handelt und nicht um viele verschiedene Aufgaben? –
Hallo Mark, ich möchte die Aktivitätsoberfläche pflegen, so dass der Benutzer, wenn er den Hintergrunddienst dazwischen anhalten möchte, dies mit der STOP-Taste tun kann. IntentService wird nach dem Start nicht mehr vom Benutzer kontrolliert. – Mandroid
Warum nicht einen Executor/Threadpool/Runnable/in einem Dienst verwenden, so können Sie immer noch die Kontrolle haben, indem Sie einen Befehl an shutdownNow() auf dem Executor senden - so ist der Service nicht an den Aktivitätslebenszyklus gebunden und Sie können ihn pflegen Kontrolle über den ausführenden Thread im Dienst. –