Ich verwende den Intent-Dienst, um regelmäßig Abfragen an meinen Server zu senden, um zu prüfen, ob Updates vorhanden sind. Im Intent-Service gibt es einen Timer-Task, der den Server alle 3 Sekunden abfragt. Dieser startet beim Beenden der Anwendung.
Jetzt, wenn der Benutzer wieder in die Anwendung kommt, möchte ich den Dienst beenden.
Wie soll ich das tun? Wie kann ein Intent-Service, der eine Timertask ausführt, von einer anderen Aktivität aus gestoppt werden?
Bitte geben Sie Vorschläge für Intent Service, weil das ist, was ich verwende.Stoppen eines Intent-Dienstes, der in Android eine Zeittask ausführt
2
A
Antwort
1
Vielleicht ist es besser, nur Service anstelle von IntentService zu verwenden.
public class UpdateService extends Service {
public class LocalBinder extends Binder {
public void startUpdates() {
// start updateThread if it not started, or
// notify about resuming probes
}
public void stopUpdates() {
// make updateThread to wait, until startUpdates
// called again.
//
// REMEMBER this method can be called when startUpdates didnt called.
}
}
// For simplicity we will use local binder.
private final IBinder binder = new LocalBinder();
@Override
public IBinder onBind(Intent intent) {
return binder;
}
private Thread updateThread = new Thread() {
@Override
public void run() {
while (true) {
// Do updates. Sleep/awake managment.
}
}
};
}
Nur bind Service (mit AUTO_CREATE_FLAG) und Updates starten, wenn Sie benötigen werden. Wenn Ihre Aktivität zeigt, binden Sie sie einfach erneut an den Dienst und lassen Sie sie Aktualisierungen stoppen.
0
Zunächst kann IntentService nicht gestoppt werden. Er wird erst beendet, nachdem alle Aufgaben in seiner Warteschlange abgeschlossen wurden. Daher sollte IntentService hier nicht verwendet werden.
Verwandte Themen
- 1. Stoppen eines Python-Programms
- 2. Stoppen eines Hintergrunddienstes von Benachrichtigung
- 3. Stoppen eines Timers
- 4. Stoppen Thread, der nicht wirft Exception Android
- 5. Android, Problem beim Stoppen der Animation
- 6. Android Studio - Wie man eine Methode ständig ausführt?
- 7. Stoppen eines programmgesteuert instanziierten Storyboards
- 8. Nur ein div, das eine jQuery.ajax ausführt
- 9. Android Async-Task Abbrechen/Stoppen
- 10. Stoppen Sie eines der Click-Ereignisse auf der gleichen Schaltfläche
- 11. wie ausführt Linux eine Datei
- 12. So stoppen Sie einen Alarm in Android
- 13. Stoppen eines Symfony-Konsole Befehl
- 14. Stoppen eines laufenden Prozesses über GUI, in Java
- 15. Das Entfernen eines UIViewControllers, der einen Thread ausführt, stürzt meine App ab.
- 16. Matrixmanipulationscode, der unbekannte Operationen ausführt
- 17. Stoppen Android Studio Shell-Prozess wird nicht Tests stoppen
- 18. Stoppen eines Webtests, wenn eine Extraktionsregel fehlgeschlagen ist
- 19. Eine Schluckuhraufgabe stoppen?
- 20. Wie Thread sicher in Android zu stoppen?
- 21. wie stoppen schleife slideshow in android
- 22. Stoppen der Bewegung von SCNPhysicsBody
- 23. android, wie gps zu stoppen
- 24. So benennen Sie den Knoten, der eine MNS-Datenbank ausführt
- 25. Daemon, der eine "Warteschlange" überwacht und Befehle asynchron ausführt
- 26. Ein Dienst, der JAR-Dateien ausführt
- 27. ScheduledThreadPoolExecutor, der eine falsche Zeit wegen CPU-Zeitdiskrepanz ausführt
- 28. Wie kann man eine JSP frühzeitig stoppen?
- 29. Stoppen eines IntentService von einer Aktivität
- 30. Threading Android ausführt Lücke in dem UI-Thread