Yang merupakan delegasi yang tepat untuk diterapkan ketika aplikasi bangun dari latar belakang dan Anda ingin persiapannya menjadi aktif?
applicationWillEnterForeground vs applicationDidBecomeActive - Apa bedanya?
Yang merupakan delegasi yang tepat untuk diterapkan ketika aplikasi akan tidur dan Anda ingin mempersiapkannya untuk membersihkan dan menyimpan data?
applicationWillResignActive vs applicationDidEnterBackground - Apa bedanya?
Juga, saya perhatikan bahwa applicationWillResignActive dipanggil ketika SMS atau panggilan masuk tetapi pengguna memilih untuk mengklik Ok dan melanjutkan. Saya tidak ingin aplikasi saya mengambil tindakan dalam kasus ini. Saya hanya ingin tetap berjalan tanpa pembersihan lanjutan karena pengguna tidak keluar dari aplikasi. Jadi, saya akan berpikir lebih masuk akal untuk melakukan pekerjaan pembersihan hanya di applicationDidEnterBackground.
Saya akan menghargai masukan Anda tentang praktik terbaik yang harus diikuti dalam memilih delegasi mana yang akan diimplementasikan untuk bangun dan tidur serta mempertimbangkan acara-acara seperti terganggu oleh SMS / panggilan.
Terima kasih
-applicationWillEnterForeground:
tidak akan dipanggil, hanya-applicationDidEnterBackground:
(misalkan, iOS tidak berpikir itu adalah peluncuran kembali).applicationWillEnterForeground:
akan dipanggil setiap saat dari latar belakang ke latar depan ?! Saya tidak dapat menemukan case yang BUKAN disebut TANPAapplicationDidBecomeActive
setelahnya.Mengelola Siklus Hidup Aplikasi Anda sangat membantu untuk pertanyaan Anda. Untuk konsep cepat, Anda dapat melihat Gambar di dokumen itu. Anda juga dapat membaca komentar dari kode yang dihasilkan oleh XCode Wizard. Terdaftar sebagai berikut:
Untuk penjelasan lebih rinci, silakan merujuk ke dokumen resmi untuk UIApplicationDelegate
sumber
Saya masih agak bingung dengan jawaban Dano jadi saya melakukan sedikit tes untuk mendapatkan alur peristiwa dalam skenario tertentu untuk referensi saya, tetapi mungkin bermanfaat bagi Anda juga. Ini untuk aplikasi yang JANGAN gunakan
UIApplicationExitsOnSuspend
di info.plist mereka. Ini dilakukan pada simulator iOS 8 + dikonfirmasi dengan perangkat iOS 7. Maafkan nama penangan acara Xamarin. Mereka sangat mirip.Ya,
DidEnterBackground
dipanggil dua kali pada perangkat iOS7. Kedua kali keadaan aplikasi UIA adalah Latar Belakang. Namun, simulator iOS 8 tidak. Ini perlu pengujian pada perangkat iOS 8. Saya akan memperbarui jawaban saya ketika saya mendapatkannya, atau orang lain dapat mengonfirmasi.sumber
applicationWillEnterForeground
disebut:ketika aplikasi diluncurkan kembali (datang dari latar belakang ke latar depan) Metode ini tidak dipanggil ketika aplikasi dimulai untuk pertama kalinya yaitu ketika
applicationDidFinishLaunch
dipanggil tetapi hanya ketika datang dari latar belakangapplicationDidBecomeActive
applicationDidBecomeActive
disebutketika aplikasi pertama kali diluncurkan setelah
didFinishLaunching
setelahapplicationWillEnterForeground
jika tidak ada URL untuk menangani. setelahapplication:handleOpenURL:
dipanggil. setelahapplicationWillResignActive
jika pengguna mengabaikan gangguan seperti panggilan telepon atau SMS. setelah menghilangnya alertView di mana saja dari aplikasisumber
applicationWillResignActive dipanggil ketika sistem meminta izin. (di iOS 10). Hanya untuk berjaga-jaga jika ada orang yang mengalami masalah yang sama dengan saya ...
sumber
Di iOS 8+ ada perbedaan yang halus tetapi penting untuk menerima panggilan telepon.
Di iOS 7 jika pengguna menerima panggilan telepon, baik applicationWillResignActive: dan applicationDidEnterBackground: dipanggil. Tetapi di iOS 8+ hanya applicationWillResignActive: dipanggil.
sumber
Untuk iOS 13+ metode berikut akan dijalankan:
sumber