Heim >häufiges Problem >Wie ist der Service-Lebenszyklus?
Der Dienstlebenszyklus ist in vier Teile unterteilt, nämlich den Lebenszyklus des gestarteten Dienstes, den Lebenszyklus des gebundenen Dienstes, den Lebenszyklus des gestarteten und gebundenen Dienstes und die Freigabe des Dienstes Der Dienst wird gestoppt.
Service-Lebenszyklus
Ähnlich wie Aktivität hat auch Service zu verschiedenen Zeitpunkten eine eigene Lebenszyklusfunktion. Das System ruft die entsprechende Service-Lebenszyklusfunktion auf, aber im Vergleich zum Aktivitätsdeklarationszyklus ist der Service-Deklarationszyklus einfacher.
(1) Lebenszyklus des gestarteten Dienstes
Wenn ein Dienst durch eine Aktivität gestartet wird, die die Methode Context.startService aufruft, dann unabhängig davon, ob eine Aktivität vorhanden ist Mit bindService Define oder unbindService gebunden, um die Bindung an den Dienst aufzuheben, und der Dienst wird im Hintergrund ausgeführt. Wenn ein Dienst mehrmals von der startService-Methode gestartet wird, wird die onCreate-Methode nur einmal aufgerufen, onStart wird mehrmals aufgerufen (entsprechend der Anzahl der Aufrufe von startService) und das System erstellt nur eine Instanz des Dienstes. Der Dienst wird immer im Hintergrund ausgeführt, unabhängig davon, ob die Aktivität des entsprechenden Programms ausgeführt wird, bis stopService oder seine eigene stopSelf-Methode aufgerufen wird. Wenn die Systemressourcen nicht ausreichen, kann es natürlich auch sein, dass das Android-System den Dienst beendet.
(2) Lebenszyklus des gebundenen Dienstes
Wenn ein Dienst durch eine Aktivität gebunden und gestartet wird, die die Methode Context.bindService aufruft, egal wie oft bindService wird aufgerufen Jedes Mal wird die onCreate-Methode nur einmal aufgerufen und die onStart-Methode wird nie aufgerufen. Wenn die Verbindung hergestellt ist, wird der Dienst weiter ausgeführt, sofern nicht Context.unbindService zum Trennen aufgerufen wird oder der Kontext, der zuvor bindService aufgerufen hat, nicht mehr vorhanden ist (z. B. wenn die Aktivität beendet ist), stoppt das System den Dienst automatisch Das entsprechende onDestroy wird aufgerufen.
(3) Lebenszyklus eines Dienstes, der gestartet und gebunden wird
Wenn ein Dienst erneut gestartet und gebunden wird, wird der Dienst immer im Hintergrund ausgeführt. Und egal wie es aufgerufen wird, onCreate wird immer nur einmal aufgerufen, entsprechend der Häufigkeit, mit der startService aufgerufen wird, wird onStart von Service genauso oft aufgerufen. Der Aufruf von unbindService stoppt den Dienst nicht, sondern muss stopService oder stopSelf des Dienstes aufrufen, um den Dienst zu stoppen.
(4) Löschen Sie den Dienst, wenn der Dienst gestoppt wird
Wenn ein Dienst beendet wird (1. stopService aufrufen; 2. stopSelf aufrufen; 3. Keine Bindung mehr Wenn eine bestimmte Verbindung (nicht gestartet) wurde, wird die onDestroy-Methode aufgerufen. Hier sollten Sie einige Aufräumarbeiten durchführen, z. B. das Stoppen des im Dienst erstellten und ausgeführten Threads.
Das obige ist der detaillierte Inhalt vonWie ist der Service-Lebenszyklus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!