2016-03-22 18 views
0

Ekranlardan birinde kullanıcı adı ve şifreyi kabul eden bir iPhone uygulaması oluşturduğumu varsayın. Kullanıcı adımı girerken, telefon araması gibi yüksek öncelikli bir etkinlik alıyorum. Uygulamam, bu noktada etkin olmaktan etkin olmayan duruma geçecek.iPhone Uygulamayı etkin olmayan duruma geçme

Buradaki sorum şu: Uygulamamda uygulamam gereken adımlar nelerdir, böylece uygulamamın daha sonra etkinleşmesi durumunda aynı şeyi geri yükleyebilmek için geçerli uygulama durumunu (ve girilen bilgi) kaydedebilir miyim?

Bu soru iOS görüşmelerinden birinde sorulmuştur.

Cevabım, kısmen girilen kullanıcı bilgileri ayrıntılarını kaydetmek ve applicationDidBecomeActive yöntemine geri yüklemek için applicationWillResignActive temsilci yönteminde etkin olmayan durum geçişi işlemek için kullanıldı. Uygulama UI durumu, işletim sistemi tarafından ele alınacağı için ele almak zorunda değiliz.

Görüşmecinin cevabımla ikna olmadığına benziyordu. O, uygulama durumunun geri yüklenmesini sağlamak için uygulamanızı nasıl aktif tutacağınızı (uygulamanızda atacağınız adımlar) etkin bir durumdan etkin olmayan duruma geçtiğini ve uygulamanızda etkin duruma nasıl geçeceğini sordu.

cevap

1

Yanıtınız doğru olduğunda, şu yöntemlerin her isim için Görüşmeci muhtemelen bakıyordu ve büyük olasılıkla yalnızca belirtilen iki adlandırılmış. Böyle applicationDidEnterBackground ve

bunlardan her ne için kullanıldığını daha iyi anlamak alacak yorumlarda bu yöntemlerin varsayılan açıklama okursanız applicationWillEnterForeground gibi belirli App UI devletler için birkaç diğer temsilci yöntemleri vardır. Örneğin, applicationWillResignActive özellikle gelen telefon aramaları veya SMS mesajlarını ifade eder:

// Uygulama aktif konumdan etkin olmayan duruma geçmek üzere olduğunda gönderilir. Bu, belirli geçici kesintiler (gelen telefon araması veya SMS mesajı gibi) veya kullanıcı uygulamayı bıraktığında ve arka plan durumuna geçişi başlattığında gerçekleşebilir.

// Devam etmekte olan görevleri duraklatmak, zamanlayıcıları devre dışı bırakmak ve OpenGL ES kare hızlarını azaltmak için bu yöntemi kullanın. Oyun, oyunu duraklatmak için bu yöntemi kullanmalıdır.

Ve applicationDidEnterBackground bir kullanıcı uygulamanızı kapattığında kullanıcı verilerini kaydetmek için geçerli:

// paylaşılan kaynakları serbest kullanıcı verileri kaydetmek, zamanlayıcılar geçersiz ve yeterli uygulama durumu bilgileri depolamak için bu yöntemi kullanın Daha sonra sonlandırılması durumunda başvurunuzu mevcut durumuna geri yükleyin.

// Uygulamanız arka planda yürütmeyi destekliyorsa, bu yöntem applicationWillTerminate yerine çağrılır: kullanıcı çıktığı zaman.

AppDelegate'inize göz atın.Yeni bir projenin m dosyası ve yorumları, hangisinin hangi eyaletleri ve ne zaman kullanacağınızı tam olarak anlayabilmeniz için çok, çok faydalıdır.

Ayrıca, uygulama durumlarını ele Apple'ın belgelere kadar mutlaka okuyun: The App Life Cycle

0

Sana restore state hakkında çok daha konuştuğunu düşünüyorum. Senin viewController içinde Sonra

func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool { 
    return true 
} 
func application(application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool { 
    return true 
} 

UIStateRestoring protokolünü uygulamak: Her şeyden
Öncelikle App temsilci protokolünü uygulamak. Burada, kendi karmaşık nesnenizi arşivlemek isterseniz, NSCoder'u uygulamayı unutmayın.
Lütfen "State Restoration" bölümüne gidin. Ayrıca, uygulamanız arka plana gittiğinde, durdurma zamanlayıcısı, devam eden görevi duraklatma gibi bazı işler yapmanız gerekir.
Ön plana gittiğinizde, duraklatılmış görevi başlatmak ve sayfayı yenilemek için hazırlanmak gibi bir şeyler yapmanız gerekir.

+0

Yanıt için teşekkürler. İşte bir [link] (https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Strategies içinYourApp/StrategiesiçinYüklemeYourApp.html#//apple_ref/doc/uid/TP40007072-CH5-SW2) Uygulama durumunun korunması ve restorasyonu ile ilgili görüşmelerin ayrıntılarına inandım. Umarım bu sadece arka plan/ön plan durum geçişi için değil, aynı zamanda kesintiye uğrayan uygulamaların geri yüklenmesi için de geçerlidir (kullanım durumum). – Marimuthu

İlgili konular