Antworten:
Wird es sofort beendet oder vervollständigt es die Funktion, von der es aufgerufen wurde?
Die aufgerufene Methode finish()wird vollständig ausgeführt. Der finish()Vorgang beginnt erst, wenn Sie die Kontrolle an Android zurückgeben.
Jedes Lebenszyklus Ereignis wie onCreate, onResume, onPause.... onDestroyeine Aktivität immer auf einem einzelnen Thread aufgerufen wird - der „Haupt - Thread“.
Kurz gesagt, dieser Thread wird von einer Warteschlange unterstützt, in die alle Aktivitätsereignisse gepostet werden. Dieser Thread kann alle diese Ereignisse in der Reihenfolge des Einfügens ausführen.
Wenn Sie finish()einen der Lebenszyklus-Rückrufe wie onCreate()... aufrufen , wird dieser Warteschlange eine "Finish" -Nachricht hinzugefügt, aber der Thread kann die "Finish" -Aktion erst auswählen, wenn die aktuell ausgeführte Methode zurückgegeben wird, dh der Thread wird freigegeben aktuelle Aufgabe.
ondestroy() ist der letzte Anruf, den Sie erhalten, bevor Ihre Aktivität zerstört wird.
Dies kann entweder passieren, weil die Aktivität beendet ist (jemand hat sie aufgerufen finish() , oder weil das System diese Instanz der Aktivität vorübergehend zerstört, um Platz zu sparen. Mit der isFinishing() Methode können Sie zwischen diesen beiden Szenarien unterscheiden .
Wenn es zwei Aktivitäten A und B gibt. Und Ihr Fluss geht von A> B; und B = A ruft an finish().
Dann,
Die Methode, von der finish()aus Sie aufgerufen haben, wird wie von Mark erwähnt ausgeführt. Und der Rückruffluss wird wie folgt sein:
onPause() von activity AonRestart()> onStart()> onResume()Tätigkeits Bfinish()aus activity A; hier wird nur onStop()von Activity Agenannt. Während in diesem Fall, wo wir genannt finish()von Activity A; Also onStop()und onDestroy()beides wird verlangt activity A.