2016-05-26 13 views
1

Ein Dienst kann unbegrenzt im Hintergrund ausgeführt werden, selbst wenn die Komponente, die den Dienst gestartet hat, zerstört wird.Werden die Threads angehalten, wenn die Anwendung geschlossen wird?

hat der Thread diese Vorteile?

Wenn wir einen Thread haben, der Datei aus dem Internet herunterlädt, wird es aufhören, wenn wir die Anwendung schließen? Ich weiß, dass es besser ist, Dienste zu verwenden, aber funktionieren die Threads weiter, nachdem die Anwendung als Dienste geschlossen wurde?

Antwort

0

Threads laufen weiter, nachdem eine Anwendung geschlossen wurde. Abhängig davon, wie viele Ressourcen der Thread verbraucht, kann er jedoch jederzeit vom Betriebssystem gelöscht werden. Ich bin nicht sicher, was Ihr Anwendungsfall ist, aber wegen der hohen Wahrscheinlichkeit, dass der Thread getötet wird, sollten Sie fast definitiv einen Dienst verwenden, um Hintergrundaufgaben wie das Herunterladen einer Datei zu erledigen.

Wenn Sie an einem Hintergrundthread arbeiten, der nicht unterbrochen werden soll (selbst nachdem die Anwendung, die den Thread gestartet hat, geschlossen wird), verwenden Sie einen Dienst, und starten Sie den Dienst im Vordergrund. Dadurch wird ein Symbol in der Benachrichtigungsleiste erstellt, das den Benutzer darüber informiert, dass ein Hintergrundprozess ausgeführt wird. Dadurch wird Ihr Service weniger wahrscheinlich getötet.

Von Androids Dokumentation:

Eine Vordergrunddienst ist ein Dienst, der aktiv bewusst und damit kein Kandidat für das System etwas zu sein, der Benutzer betrachtet hat, wenn wenig Speicher zu töten. Ein Vordergrunddienst muss eine Benachrichtigung für die Statusleiste bereitstellen, die unter der Überschrift "fortlaufend" platziert wird. Dies bedeutet, dass die Benachrichtigung nicht beendet werden kann, wenn der Dienst nicht beendet oder aus dem Vordergrund entfernt wird.

Android in der Dokumentation über Dienstleistungen ist ein guter Ort, um mehr zu lesen:

https://developer.android.com/guide/components/services.html#Foreground

aber Fäden wieder aufnehmen zu arbeiten, nachdem die Anwendung als Service geschlossen ist?

Wenn der Thread nie beendet wird und Sie Ihre Anwendung erneut öffnen, wird der Thread noch ausgeführt. Aber wegen der hohen Wahrscheinlichkeit, dass das Betriebssystem Ihren Thread abbricht, sollte ein Dienst für lange laufende Hintergrundaufgaben verwendet werden.

Verwandte Themen