SORU
4 Kasım 2010, PERŞEMBE


() onSaveİnstanceState ve onRestoreİnstanceState ()

Ve Activity yöntemleri onSaveInstanceState() onRestoreInstanceState() kullanma durumunu kaydetmek ve geri yüklemek için çalışıyorum.

Sorun asla onRestoreInstanceState() yöntemi girer. Biri bana bunun nedenini bana açıklayabilir mi?

CEVAP
17 Temmuz 2011, Pazar


onRestoreInstanceState() denirsadece ne zaman yenidenaktivite sonrasıöldürdüişletim sistemi tarafından. Böyle bir durum oldu:

  • cihaz değişiklikleri (aktivite yok ve yeniden) yönlendirme
  • senin önünde başka bir etkinlik var ve bir noktada OS boş bellek (örneğin) için aktivite öldürür. Etkinlik onRestoreInstanceState() başlattığınızda dahaki sefere verilir.

Kontrast: eger etkinlik ve vurmak Back düğmesi cihazı, etkinlik bitiş()ed (yani bence spesifik ve masaüstü uygulama) ve bir dahaki sefere sen Başlat uygulaması başladı "taze", yani olmadan kurtardı durumu nedeniyle bilerek çıkıldı o zaman vurmak Back.

Karmaşanın bir başka kaynak bir uygulama başka bir uygulama odağı kaybettiğinde onSaveInstanceState() deniyor ama uygulamanızın geri gidin onRestoreInstanceState() çağrılamaz. Bu durumda açıklanan ilk soru, Yani eğer aktivite DEĞİLDİ öldürdü dönem boyunca diğer etkinlik oldu ön onRestoreInstanceState() olmayacak diye aktiviteniz oldukça fazla "canlı".

onRestoreInstanceState() belgelerinde belirtildiği gibi, tüm, bütün:

Çoğu uygulamaları sadece onCreate(Bundle) onların geri yüklemek için kullanır bazen uygun işte tüm bunlardan sonra bunu devlet, ama başlatma veya alt karar vermek için izin vermek için yapıldı varsayılan uygulama kullanmak için. Bu varsayılan uygulama yöntem daha önce herhangi bir görüş geri bir devlet yapar onSaveİnstanceState(Bundle) tarafından dondurulmuş.

Activity sınıflara sürece onRestoreInstanceState() geçersiz kılmak için bir sebep Yoktur ve eğer biri sizin alt sınıf alt sınıf beklenmektedir. okudum gibi:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • SegaAmerica

    SegaAmerica

    5 Mart 2008