2017-07-03 2 views
1

Nach documentation, jede Android-Komponente im gleichen Prozess standardmäßig ausgeführt. Also, wenn Sie startService aufrufen, um einen intentService in UI-Thread zu starten. Der intentService tatsächlich in der gleichen Prozess laufen, aber ein anderer Thread namens Worker Thread, richtig?Ein intentService wird nicht vom System gelöscht?

Und System könnte jede Anwendung Prozess töten, wenn nicht genug Speicher vorhanden ist. Gemäß dem documentation von intentService, stoppt es sich selbst sobald es keine Arbeit mehr hat. Bedeutet dies, dass der Prozess, der IntentService ausführt, nicht vom System getötet wird? Da es sich um denselben Prozess handelt, bei dem UI-Threads gehostet werden, bedeutet dies, dass auch die App im Hintergrund ausgeführt wird, solange die App über einen intentService verfügt, der vom System nicht ausgeführt wird.

Dank

Antwort

1

Die intentService tatsächlich im gleichen Prozess laufen, aber ein anderer Thread Worker-Thread genannt, nicht wahr?

Objekte in Java "laufen" nicht in einem Thread. Methoden werden in einem Thread aufgerufen. Die onHandleIntent() Methode eines IntentService wird auf einem Hintergrundthread aufgerufen.

Bedeutet dies, dass der Prozess, der IntentService ausführt, nicht vom System getötet wird?

No.

Da es das gleiche Verfahren ist, das

UI Thread hostet

Jeder Prozess hat ein Gewinde, das seine Hauptanwendung Thread aufgerufen wird (oder manchmal ihre UI-Thread). Threads sind an Prozesse gebunden; Es gibt keinen einzigen magischen "UI-Thread" für das gesamte Gerät.

bedeutet es, dass sogar App im Hintergrund ist, solange die App einen intentService hat, der ausgeführt wird, wird nicht vom System getötet?

Nr

+0

Wenn wir also, wenn das System Kill App keine Verfahren festlegen, die die onHandleIntent aufruft, wird der Hintergrund-Thread, der ausführt onHandlerIntent getötet werden? –

+0

@shuoweng: Wenn Sie mit "System kill app" meinen "Android beendet den Prozess, in dem der Dienst ist", dann ja. – CommonsWare

Verwandte Themen