Lalu bagaimana cara menyelesaikan suatu aktivitas yang dipanggil oleh StartAvtivityforResults () tanpa penyelesaian?
Ayush Pateria
@CommonsWare Bagaimana kami dapat memastikan bahwa onStop selalu dipanggil? Dalam aplikasi saya, OnStop dan onDestroy tidak dipanggil dalam beberapa kasus dan dalam kasus tersebut aktivitas anak membutuhkan terlalu banyak waktu dalam penyelesaian dan sepertinya Aplikasi telah hang ... Sedangkan ketika onStop dipanggil semuanya berfungsi normal. Saya menggunakan Galaxy y dengan Android 2.3.6 ... lihat pertanyaan saya di stackoverflow.com/questions/13928591/… tolong bantu !!!
Amit
@CommonsWare Saya menguji Pak sangat benar. +1 untuk Anda Tapi saya ingin mengajukan satu pertanyaan yang saya tulis finish () sebagai pernyataan pertama dalam fungsi saya kemudian menjalankan seluruh fungsi dan kemudian finish () disebut Bagaimana ini dikelola.
Nikhil Agrawal
@NikhilAgrawal, Anda dapat meminta fungsi Anda kembali tepat setelah finish () dipanggil.
antonio081014
Apakah finish () juga memanggil onPause () dan onStop () sebelum memanggil onDestroy ()?
sr09
20
Setiap siklus hidup acara seperti onCreate, onResume, onPause.... onDestroydari sebuah Kegiatan selalu disebut di thread tunggal - The "benang Utama".
Singkatnya, utas ini didukung oleh Antrean tempat semua acara aktivitas diposting. Utas ini dapat menjalankan semua acara ini dalam urutan penyisipan.
Jika Anda memanggil finish()salah satu callback siklus hidup seperti onCreate()... pesan "selesai" akan ditambahkan ke antrean ini tetapi utas tidak bebas untuk memilih & menjalankan tindakan "selesai" hingga metode yang sedang dijalankan kembali yaitu Utas dibebaskan dari tugas saat ini.
ondestroy() adalah panggilan terakhir yang Anda terima sebelum aktivitas Anda dimusnahkan.
Hal ini dapat terjadi baik karena aktivitas sedang selesai (seseorang memanggilnya finish() , atau karena sistem untuk sementara menghancurkan instance aktivitas ini untuk menghemat ruang. Anda dapat membedakan antara dua skenario ini dengan isFinishing() metode.
Jika ada dua aktivitas A dan B. Dan aliran Anda mengalir dari A> B; dan B = A panggilan finish().
Kemudian,
Metode tempat Anda memanggil finish()akan dijalankan seperti yang disebutkan Mark. Dan aliran panggilan balik akan diikuti -
onPause() dari activity A
onRestart()> onStart()> onResume()Kegiatan B
Kemudian, muncul perbedaan yang nyata. Jika Anda tidak menelepon finish()dari activity A; hanya onStop()dari Activity Aakan disebut di sini. Sementara, dalam hal ini, di mana kita dipanggil finish()dari Activity A; Jadi onStop()dan onDestroy()keduanya akan dipanggil activity A.
Jawaban:
Metode yang dipanggil
finish()
akan berjalan sampai selesai. Thefinish()
operasi bahkan tidak akan dimulai sampai Anda kembali kontrol untuk Android.sumber
Setiap siklus hidup acara seperti
onCreate
,onResume
,onPause
....onDestroy
dari sebuah Kegiatan selalu disebut di thread tunggal - The "benang Utama".Singkatnya, utas ini didukung oleh Antrean tempat semua acara aktivitas diposting. Utas ini dapat menjalankan semua acara ini dalam urutan penyisipan.
Jika Anda memanggil
finish()
salah satu callback siklus hidup sepertionCreate()
... pesan "selesai" akan ditambahkan ke antrean ini tetapi utas tidak bebas untuk memilih & menjalankan tindakan "selesai" hingga metode yang sedang dijalankan kembali yaitu Utas dibebaskan dari tugas saat ini.sumber
ondestroy()
adalah panggilan terakhir yang Anda terima sebelum aktivitas Anda dimusnahkan.Hal ini dapat terjadi baik karena aktivitas sedang selesai (seseorang memanggilnya
finish()
, atau karena sistem untuk sementara menghancurkan instance aktivitas ini untuk menghemat ruang. Anda dapat membedakan antara dua skenario ini denganisFinishing()
metode.sumber
Jika ada dua aktivitas A dan B. Dan aliran Anda mengalir dari A> B; dan B = A panggilan
finish()
.Kemudian,
Metode tempat Anda memanggil
finish()
akan dijalankan seperti yang disebutkan Mark. Dan aliran panggilan balik akan diikuti -onPause()
dariactivity A
onRestart()
>onStart()
>onResume()
Kegiatan Bfinish()
dariactivity A
; hanyaonStop()
dariActivity A
akan disebut di sini. Sementara, dalam hal ini, di mana kita dipanggilfinish()
dariActivity A
; JadionStop()
danonDestroy()
keduanya akan dipanggilactivity A
.sumber