• 29 Mart 2024 16:17

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

Instance State Nedir, Ne Zaman Kullanılır?

Konunun içeriğinin daha iyi anlaşılması açısından şöyle bir senaryo üzerinden ilerleyebiliriz:

Örnek ekranımızda bir adet TEXTBOX ve bir adet LABEL var. Butona tıklandığında TEXTBOX değerini alıp LABELe yazdırılıyor. İlk ekranımızda göründüğü gibi “Sait ORHAN” yazısı labele yazdırılmış. Bu durumda iken telefonun yönünü değiştirilmesi durumunda label değeri tasarım aşamasında verilen değere dönüyor. Örneğimizde “HELLO WORLD!” metnine döndüğü gibi ve telefon yönü eski durumuna getirilse bile atanan değer geri gelmiyor.

Bu durumun nedeni Android‘in kullanıcıdan alınan değerleri tutup performansa olumsuz etkisi olmaması için statik değer olduğu farzedilen değerleri hafızaya almamasıdır.

Bu sorunun çözmenin yolu; telefonun yönü değiştiğinde sırası ile onSaveInstanceState ve onRestoreInstanceState olayları tetikleniyor.

onSaveInstanceState metodu içerisinde bu şekilde kaybolan değerler Bundle tipindeki parametreye alınarak koruma altına alınır.

@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        outState.putString("name", labelName.getText().toString());
    }

onRestoreInstanceState metodu içinde de onSaveInstanceState metodunda kaydedilen değerler alınarak ilgili kontrollere atanır.

@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        String name = savedInstanceState.getString("name");
        labelName.setText(name);
    }

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.