SORU
20 AĞUSTOS 2011, CUMARTESİ


En iyi uygulama: yönünü değiştirme sırasında AsyncTask

AsyncTask başka bir konu karmaşık görevleri çalıştırmak için harika bir şey.

Ama bir oryantasyon değiştirmek veya AsyncTask hala çalışırken başka bir yapılandırma değişikliği olduğunda, geçerli etkinlik yok edilir ve yeniden başlatılır. Ve AsyncTask örneği aktiviteye bağlı olarak, başarısız ve neden bir "ileti penceresi. kuvvet yakın

"En iyi uygulama" bu hataları önlemek ve başarısız önlemek için AsyncTask. bir tür arıyorum yani

Şimdiye kadar gördüğüm tek şey:

  • Yönlendirme değişiklikleri devre dışı bırakın. / Kesinlikle bu işi gerektiği gibi değil.
  • Görev hayatta kalmak icar ve yeni aktivite ile güncellenmesi onRetainNonConfigurationİnstance) örneği
  • Aktivite yok ve etkinliği yeniden oluşturulduğunda, onu yeniden açtığınızda sadece görev iptal ediliyor.
  • Etkinlik yerine uygulama sınıfı için görev örneğine bağlama.
  • Bazı kullanılan yöntem "raflar" projesi (onRestoreİnstanceState)

Bazı kod örnekleri:

Android AsyncTasks during a screen rotation, Part I Part II

ShelvesActivity.java

Beni en iyi sorun çözen en iyi yaklaşım bulmak için Yardım ve uygulanması kolay mı? Kodu doğru bunu nasıl çözeceğimi bilmiyorum da önemlidir. Yardım ettiğin için teşekkür ederim :-)

CEVAP
30 NİSAN 2013, Salı


YapınDEĞİLandroid:configChanges bu sorunu gidermek için kullanın. Bu çok kötü bir uygulamadır.

YapınDEĞİLActivity#onRetainNonConfigurationInstance() ya kullanın. Bu daha az modüler ve uygun Fragmenttabanlı uygulamalar için değil.

15* *yapılandırma değişiklikleri Fragments korudu kullanarak nasıl tarif edebilirsiniz. Güzel AsyncTask rotasyon genelinde bir değişim tutma sorunu çözer. Temelde gerek ana AsyncTask içinde Fragment, çağrı setRetainInstance(true) Fragment, rapor AsyncTask's ilerleme/sonuçlar Activity ile korudu Fragment.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Morrison

    Jonathan Mor

    24 Mart 2010
  • Press Start

    Press Start

    4 HAZİRAN 2006
  • Top10Series

    Top10Series

    26 Kasım 2008