Etkinlik yaşam döngüsü ve durumu nasıl kullanılır?

1. Hoş geldiniz

Bu pratik kod laboratuvarı, Android Developer Fundamentals (Sürüm 2) kursunun 1. Birimi: Başlangıç bölümünde yer alır. Bu kurstan en iyi şekilde yararlanmak için kod laboratuvarlarını sırayla tamamlamanız gerekir:

  • Kurstaki kod laboratuvarlarının tam listesi için Android Developer Fundamentals (V2) için Codelabs başlıklı makaleyi inceleyin.
  • Tüm kavram bölümlerinin, uygulamaların ve slaytların bağlantıları da dahil olmak üzere kursla ilgili ayrıntılar için Android Geliştirici Temel Bilgileri (2. Sürüm) başlıklı makaleyi inceleyin.

Giriş

Bu uygulamalı eğitimde, etkinlik yaşam döngüsü hakkında daha fazla bilgi edineceksiniz. Yaşam döngüsü, bir etkinliğin oluşturulduğu andan yok edildiği ve sistemin kaynaklarını geri aldığı ana kadar olan tüm yaşam süresi boyunca bulunabileceği durumlardır. Kullanıcılar uygulamanızdaki etkinlikler arasında gezinirken (ve uygulamanıza girip çıkarken) etkinlikler yaşam döngülerindeki farklı durumlar arasında geçiş yapar.

IDouble trouble

Bir etkinliğin yaşam döngüsünün her aşaması, onCreate(), onStart(), onPause() vb. karşılık gelen bir geri çağırma yöntemine sahiptir. Bir etkinlik durumu değiştiğinde ilişkili geri çağırma yöntemi çağrılır. Bu yöntemlerden birini daha önce görmüştünüz: onCreate(). Etkinlik sınıflarınızdaki yaşam döngüsü geri çağırma yöntemlerinden herhangi birini geçersiz kılarak kullanıcı veya sistem işlemlerine yanıt olarak etkinliğin varsayılan davranışını değiştirebilirsiniz.

Etkinlik durumu, cihaz yapılandırmasında yapılan değişikliklere (ör. kullanıcı cihazı dikeyden yatay konuma döndürdüğünde) yanıt olarak da değişebilir. Bu yapılandırma değişiklikleri gerçekleştiğinde etkinlik silinir ve varsayılan durumunda yeniden oluşturulur. Bu durumda kullanıcı, etkinliğe girdiği bilgileri kaybedebilir. Kullanıcılarınızın kafasını karıştırmamak için uygulamanızı, beklenmedik veri kayıplarını önlemek üzere geliştirmeniz önemlidir. Bu uygulamalı eğitimin ilerleyen bölümlerinde yapılandırma değişikliklerini dener ve cihaz yapılandırması değişikliklerine ve diğer etkinlik yaşam döngüsü etkinliklerine yanıt olarak bir etkinliğin durumunu nasıl koruyacağınızı öğrenirsiniz.

Bu uygulamalı eğitimde, TwoActivities uygulamasına günlük kaydı ifadeleri ekleyecek ve uygulamayı kullanırken etkinlik yaşam döngüsü değişikliklerini gözlemleyeceksiniz. Ardından bu değişikliklerle çalışmaya ve bu koşullarda kullanıcı girişini nasıl işleyeceğinizi keşfetmeye başlayacaksınız.

Ön koşullar

Şunları yapabilirsiniz:

  • Android Studio'da uygulama projesi oluşturun ve çalıştırın.
  • Uygulamanıza günlük ifadeleri ekleyin ve bu günlükleri Logcat bölmesinde görüntüleyin.
  • Etkinlik ve Intent'i anlayıp bunlarla çalışın ve bunlarla rahatça etkileşim kurun.

Neler Öğreneceksiniz?

  • Etkinlik yaşam döngüsü nasıl çalışır?
  • Bir etkinlik başladığında, duraklatıldığında, durdurulduğunda ve yok edildiğinde.
  • Etkinlik değişiklikleriyle ilişkili yaşam döngüsü geri çağırma yöntemleri hakkında.
  • Etkinlik yaşam döngüsü etkinliklerine neden olabilecek işlemlerin (yapılandırma değişiklikleri gibi) etkisi.
  • Yaşam döngüsü etkinlikleri genelinde etkinlik durumunu koruma

Yapacaklarınız

  • Günlüğe kaydetme ifadelerini içerecek şekilde çeşitli etkinlik yaşam döngüsü geri çağırmalarını uygulamak için önceki uygulamadaki TwoActivities uygulamasına kod ekleyin.
  • Uygulamanız çalışırken ve uygulamanızdaki her etkinlikle etkileşimde bulunurken durum değişikliklerini gözlemleyin.
  • Uygulamanızı, kullanıcı davranışına veya cihazdaki yapılandırma değişikliğine yanıt olarak beklenmedik bir şekilde yeniden oluşturulan bir Etkinlik'in örnek durumunu koruyacak şekilde değiştirin.

2. Uygulamaya genel bakış

Bu uygulamalı eğitimde, TwoActivities uygulamasına ekleme yapacaksınız. Uygulama, son kod laboratuvarındakiyle yaklaşık olarak aynı görünür ve aynı şekilde çalışır. İki etkinlik uygulaması içerir ve kullanıcıya bunlar arasında gönderme olanağı tanır. Bu uygulamada yapacağınız değişiklikler, uygulamanın görünür kullanıcı davranışını etkilemez.

3. 3. 1. görev: TwoActivities sınıfına yaşam döngüsü geri çağırma işlevleri ekleyin

Bu görevde, etkinlik yaşam döngüsü geri çağırma yöntemlerinin tümünü uygulayarak bu yöntemler çağrıldığında logcat'e mesaj yazdıracaksınız. Bu günlük mesajları, etkinlik yaşam döngüsünün ne zaman durum değişikliği yaptığını ve bu yaşam döngüsü durum değişikliklerinin uygulamanızı çalışırken nasıl etkilediğini görmenizi sağlar.

1.1 (İsteğe bağlı) TwoActivities projesini kopyalama

Bu uygulamadaki görevler için, son uygulamada oluşturduğunuz mevcut TwoActivities projesini değiştireceksiniz. Önceki TwoActivities projesini olduğu gibi tutmak istiyorsanız projenin bir kopyasını oluşturmak için Ek: Yardımcı Programlar bölümündeki adımları uygulayın.

1.2 MainActivity'ye geri çağırma işlevleri uygulama

  1. Android Studio'da TwoActivities projesini ve Proje > Android bölmesinde MainActivity'yi açın.
  2. onCreate() yöntemine aşağıdaki günlük ifadelerini ekleyin:
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
  1. onStart() geri çağırma işlevi için bu etkinliğin günlüğüne bir ifade ekleyerek geçersiz kılma işlemi ekleyin:
@Override
public void onStart(){
    super.onStart();
    Log.d(LOG_TAG, "onStart");
}

Kısayol olarak Android Studio'da Kod > Yöntemleri Geçersiz Kılma'yı seçin. Sınıfınızda geçersiz kılabileceğiniz tüm yöntemlerin yer aldığı bir iletişim kutusu görüntülenir. Listeden bir veya daha fazla geri çağırma yöntemi seçtiğinizde, üst sınıfa yapılan gerekli çağrı da dahil olmak üzere bu yöntemler için eksiksiz bir şablon eklenir.

  1. onPause(), onRestart(), onResume(), onStop() ve onDestroy() yaşam döngüsü geri çağırma yöntemlerini uygulamak için şablon olarak onStart() yöntemini kullanın.

Tüm geri çağırma yöntemlerinin imzaları aynıdır (ad hariç). Bu diğer geri çağırma yöntemlerini oluşturmak için onStart() işlevini kopyalayıp yapıştırırsanız üst sınıfta doğru yöntemi çağıracak ve doğru yöntemi günlüğe kaydedecek şekilde içeriği güncellemeyi unutmayın.

  1. Uygulamanızı çalıştırın.
  2. Logcat bölmesini göstermek için Android Studio'nun alt kısmındaki Logcat sekmesini tıklayın. Etkinliğin başladığı sırada geçtiği üç yaşam döngüsü durumunu gösteren üç günlük mesajı görürsünüz:
D/MainActivity: -------
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onResume

1.3 SecondActivity'de yaşam döngüsü geri çağırma yöntemlerini uygulayın

MainActivity için yaşam döngüsü geri çağırma yöntemlerini uyguladığınıza göre SecondActivity için de aynısını yapın.

  1. SecondActivity'yi açın.
  2. Sınıfın en üstüne LOG_TAG değişkeni için bir sabit ekleyin:
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
  1. Yaşam döngüsü geri çağırmalarını ve günlük ifadelerini ikinci etkinliğe ekleyin. (MainActivity'deki geri çağırma yöntemlerini kopyalayıp yapıştırabilirsiniz.)
  2. returnReply() yöntemine, finish() yönteminden hemen önce bir günlük kaydı ifadesi ekleyin:
Log.d(LOG_TAG, "End SecondActivity");

1.4 Uygulama çalışırken günlüğü gözlemleyin**

  1. Uygulamanızı çalıştırın.
  2. Logcat bölmesini göstermek için Android Studio'nun alt kısmındaki Logcat sekmesini tıklayın.
  3. Arama kutusuna Etkinlik yazın. Android logcat çok uzun ve dağınık olabilir. Her sınıftaki LOG_TAG değişkeni MainActivity veya SecondActivity kelimelerini içerdiğinden bu anahtar kelime, günlüğü yalnızca ilgilendiğiniz öğeler için filtrelemenize olanak tanır.

IDouble trouble

Uygulamanızı kullanarak denemeler yapın ve farklı işlemlere yanıt olarak gerçekleşen yaşam döngüsü etkinliklerini not edin. Özellikle aşağıdakileri deneyin:

  • Uygulamayı normal şekilde kullanın (mesaj gönderin, başka bir mesajla yanıt verin).
  • İkinci etkinlikten ana etkinliğe dönmek için Geri düğmesini kullanın.
  • İkinci etkinlikten ana etkinliğe dönmek için uygulama çubuğundaki yukarı oku kullanın.
  • Uygulamanızda cihazı hem ana hem de ikinci etkinlikte farklı zamanlarda döndürün ve günlükte ve ekranda neler olduğunu gözlemleyin.
  • Genel bakış düğmesine (Ana ekranın sağındaki kare düğme) basın ve uygulamayı kapatın (X'e dokunun).
  • Ana ekrana dönüp uygulamanızı yeniden başlatın.

İPUCU: Uygulamanızı bir emülatörde çalıştırıyorsanız Döndürme'yi Kontrol+F11 veya Kontrol+İşlev+F11 tuşlarıyla simüle edebilirsiniz.

1. görev çözüm kodu

Aşağıdaki kod snippet'lerinde ilk görevin çözüm kodu gösterilmektedir.

MainActivity

Aşağıdaki kod snippet'leri, MainActivity'ye eklenen kodu gösterir ancak sınıfın tamamını göstermez.

onCreate() yöntemi:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Log the start of the onCreate() method.
        Log.d(LOG_TAG, "-------");
        Log.d(LOG_TAG, "onCreate");

        // Initialize all the view variables.
        mMessageEditText = findViewById(R.id.editText_main);
        mReplyHeadTextView = findViewById(R.id.text_header_reply);
        mReplyTextView = findViewById(R.id.text_message_reply);
}

Diğer yaşam döngüsü yöntemleri:

@Override
protected void onStart() {
        super.onStart();
        Log.d(LOG_TAG, "onStart");
}

@Override
protected void onPause() {
        super.onPause();
        Log.d(LOG_TAG, "onPause");
}

@Override
protected void onRestart() {
        super.onRestart();
        Log.d(LOG_TAG, "onRestart");
}

@Override
protected void onResume() {
        super.onResume();
        Log.d(LOG_TAG, "onResume");
}

@Override
protected void onStop() {
        super.onStop();
        Log.d(LOG_TAG, "onStop");
}

@Override
protected void onDestroy() {
        super.onDestroy();
        Log.d(LOG_TAG, "onDestroy");
}

SecondActivity

Aşağıdaki kod snippet'leri, SecondActivity'ye eklenen kodu gösterir ancak sınıfın tamamını göstermez.

SecondActivity sınıfının en üstünde:

private static final String LOG_TAG = SecondActivity.class.getSimpleName();

returnReply() yöntemi:

public void returnReply(View view) {
        String reply = mReply.getText().toString();
        Intent replyIntent = new Intent();
        replyIntent.putExtra(EXTRA_REPLY, reply);
        setResult(RESULT_OK, replyIntent);
        Log.d(LOG_TAG, "End SecondActivity");
        finish();
}

Diğer yaşam döngüsü yöntemleri:

Yukarıdaki MainActivity ile aynıdır.

4. 4. 2. görev: Etkinlik örneği durumunu kaydetme ve geri yükleme

Sistem kaynaklarına ve kullanıcı davranışına bağlı olarak, uygulamanızdaki her etkinlik düşündüğünüzden çok daha sık yok edilip yeniden oluşturulabilir.

Bu davranışı, cihazı veya emülatörü döndürdüğünüz son bölümde fark etmiş olabilirsiniz. Cihazın döndürülmesi, cihaz yapılandırmasında yapılan bir değişiklik örneğidir. En yaygın olanı rotasyon olsa da tüm yapılandırma değişiklikleri, mevcut etkinliğin kaldırılmasına ve yeniymiş gibi yeniden oluşturulmasına neden olur. Kodunuzda bu davranışı hesaba katmazsanız yapılandırma değişikliği olduğunda etkinlik düzeniniz varsayılan görünümüne ve ilk değerlerine geri dönebilir ve kullanıcılarınız uygulamanızdaki yerlerini, verilerini veya ilerleme durumlarını kaybedebilir.

Her etkinliğin durumu, etkinlik örneği durumu adı verilen bir Bundle nesnesinde bir anahtar/değer çifti grubu olarak depolanır. Sistem, varsayılan durum bilgilerini etkinlik durdurulmadan hemen önce örnek durum paketine kaydeder ve bu paketi yeni etkinlik örneğine aktararak geri yükler.

Bir etkinlik beklenmedik bir şekilde yok edilip yeniden oluşturulduğunda etkinlikteki verileri kaybetmemek için onSaveInstanceState() yöntemini uygulamanız gerekir. Sistem, Etkinlik'in yok edilip yeniden oluşturulma olasılığı olduğunda Etkinlik'te bu yöntemi çağırır (onPause() ile onStop() arasında).

Örnek durumuna kaydettiğiniz veriler, geçerli uygulama oturumu sırasında yalnızca bu etkinliğin bu örneğine özgüdür. Yeni bir uygulama oturumunu durdurup yeniden başlattığınızda etkinlik örneği durumu kaybolur ve etkinlik varsayılan görünümüne geri döner. Kullanıcı verilerini uygulama oturumları arasında kaydetmeniz gerekiyorsa paylaşılan tercihleri veya bir veritabanını kullanın. Bu iki konu hakkında daha sonra bir uygulamalı eğitimde bilgi edineceksiniz.

2.1 onSaveInstanceState() ile etkinlik örneği durumunu kaydetme

Cihazı döndürmenin ikinci etkinliğin durumunu hiç etkilemediğini fark etmiş olabilirsiniz. Bunun nedeni, ikinci etkinlik düzeninin ve durumunun, düzenden ve etkinleştiren Intent'ten oluşturulmasıdır. Etkinlik yeniden oluşturulsa bile Intent hâlâ mevcuttur ve ikinci etkinlikteki onCreate() yöntemi her çağrıldığında bu Intent'teki veriler yine kullanılır.

Ayrıca, her etkinlikte mesaj veya yanıt EditText öğelerine yazdığınız metnin, cihaz döndürüldüğünde bile korunduğunu fark edebilirsiniz. Bunun nedeni, düzeninizdeki bazı View öğelerinin durum bilgilerinin yapılandırma değişikliklerinde otomatik olarak kaydedilmesidir. EditText'in mevcut değeri de bu durumlardan biridir.

Dolayısıyla, ilgilendiğiniz tek etkinlik durumu, ana etkinlikteki yanıt başlığı ve yanıt metni için TextView öğeleridir. Her iki TextView öğesi de varsayılan olarak görünmez. Yalnızca ikinci etkinlikten ana etkinliğe geri mesaj gönderdiğinizde görünür.

Bu görevde, onSaveInstanceState() yöntemini kullanarak bu iki TextView öğesinin örnek durumunu koruyacak kod eklersiniz.

  1. MainActivity'yi açın.
  2. onSaveInstanceState() işlevinin bu iskelet uygulamasını etkinliğe ekleyin veya iskelet geçersiz kılma eklemek için Kod > Yöntemleri Geçersiz Kıl'ı kullanın.
@Override
public void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
}
  1. Başlığın şu anda görünür olup olmadığını kontrol edin. Görünüyorsa putBoolean() yöntemini ve "reply_visible" anahtarını kullanarak bu görünürlük durumunu durum paketine ekleyin.
 if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
        outState.putBoolean("reply_visible", true);
    }

İkinci etkinlikten yanıt gelene kadar yanıt başlığı ve metninin görünmez olarak işaretlendiğini unutmayın. Başlık görünüyorsa kaydedilmesi gereken yanıt verileri vardır. Yalnızca bu görünürlük durumuyla ilgilendiğimizi unutmayın. Başlığın asıl metninin kaydedilmesine gerek yoktur çünkü bu metin hiçbir zaman değişmez.

  1. Aynı onay kutusunun içine yanıt metnini ekleyin.
outState.putString("reply_text",mReplyTextView.getText().toString());

Üstbilgi görünüyorsa yanıt mesajının da görünür olduğunu varsayabilirsiniz. Yanıt mesajının mevcut görünürlük durumunu test etmeniz veya kaydetmeniz gerekmez. Yalnızca mesajın asıl metni, "reply_text" anahtarıyla durum paketine eklenir.

Yalnızca etkinlik oluşturulduktan sonra değişebilecek görüntüleme öğelerinin durumunu kaydedersiniz. Uygulamanızdaki diğer View öğeleri (EditText, Button), varsayılan düzenden dilediğiniz zaman yeniden oluşturulabilir.

Sistemin, EditText'in içeriği gibi bazı View öğelerinin durumunu kaydedeceğini unutmayın.

2.2 onCreate() içinde etkinlik örneği durumunu geri yükleme

Etkinlik örneği durumunu kaydettikten sonra, etkinlik yeniden oluşturulduğunda durumu geri yüklemeniz de gerekir. Bunu onCreate() içinde veya Etkinlik oluşturulduktan sonra onStart() çağrıldıktan sonra çağrılan onRestoreInstanceState() geri çağırma işlevini uygulayarak yapabilirsiniz.

Çoğu zaman, durum da dahil olmak üzere kullanıcı arayüzünün en kısa sürede kullanılabilmesi için etkinlik durumunu geri yüklemenin en iyi yeri onCreate() işlevidir. Bazen tüm başlatma işlemleri tamamlandıktan sonra onRestoreInstanceState() içinde bunu yapmak veya alt sınıfların varsayılan uygulamanızı kullanıp kullanmayacağına karar vermesine izin vermek uygundur.

  1. onCreate() yönteminde, View değişkenleri findViewById() ile başlatıldıktan sonra savedInstanceState değerinin null olmadığından emin olmak için bir test ekleyin.
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);

// Restore the state.
if (savedInstanceState != null) {
}

Etkinliğiniz oluşturulduğunda sistem, tek bağımsız değişkeni olarak durum paketini onCreate() işlevine iletir. onCreate() ilk kez çağrıldığında ve uygulamanız başladığında paket null olur. Uygulamanız ilk kez başladığında mevcut bir durum yoktur. onCreate()'e yapılan sonraki çağrılarda, onSaveInstanceState() içinde depoladığınız verilerle doldurulmuş bir paket bulunur.

  1. Bu kontrolün içinde, "reply_visible" anahtarını kullanarak paketten mevcut görünürlüğü (doğru veya yanlış) alın.
if (savedInstanceState != null) {
    boolean isVisible = 
                     savedInstanceState.getBoolean("reply_visible");
}
  1. Önceki satırın altına isVisible değişkeni için bir test ekleyin.
if (isVisible) {
}

Durum paketinde reply_visible anahtarı varsa (ve isVisible bu nedenle doğruysa) durumu geri yüklemeniz gerekir.

  1. isVisible testinin içinde başlığı görünür hale getirin.
mReplyHeadTextView.setVisibility(View.VISIBLE);
  1. "reply_text" anahtarını kullanarak paketten kısa mesaj yanıtını alın ve yanıt TextView'sini bu dizeyi gösterecek şekilde ayarlayın.
mReplyTextView.setText(savedInstanceState.getString("reply_text"));
  1. Yanıt TextView'ini de görünür hale getirin:
mReplyTextView.setVisibility(View.VISIBLE);
  1. Uygulamayı çalıştırın. Etkinlik yeniden oluşturulduktan sonra yanıt mesajının (varsa) ekranda kalmasını sağlamak için cihazı veya emülatörü döndürmeyi deneyin.

2. görev çözüm kodu

Aşağıdaki kod snippet'lerinde bu görevin çözüm kodu gösterilmektedir.

MainActivity

Aşağıdaki kod snippet'leri, MainActivity'ye eklenen kodu gösterir ancak sınıfın tamamını göstermez.

onSaveInstanceState() yöntemi:

@Override
public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   // If the heading is visible, message needs to be saved.
   // Otherwise we're still using default layout.
   if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
       outState.putBoolean("reply_visible", true);
       outState.putString("reply_text", 
                      mReplyTextView.getText().toString());
   }
}

onCreate() yöntemi:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   Log.d(LOG_TAG, "-------");
   Log.d(LOG_TAG, "onCreate");

   // Initialize all the view variables.
   mMessageEditText = findViewById(R.id.editText_main);
   mReplyHeadTextView = findViewById(R.id.text_header_reply);
   mReplyTextView = findViewById(R.id.text_message_reply);

   // Restore the saved state. 
   // See onSaveInstanceState() for what gets saved.
   if (savedInstanceState != null) {
       boolean isVisible = 
                     savedInstanceState.getBoolean("reply_visible");
       // Show both the header and the message views. If isVisible is
       // false or missing from the bundle, use the default layout.
       if (isVisible) {
           mReplyHeadTextView.setVisibility(View.VISIBLE);
           mReplyTextView.setText(savedInstanceState
                                  .getString("reply_text"));
           mReplyTextView.setVisibility(View.VISIBLE);
       }
   }
}

Projenin tamamı:

Android Studio Projesi: TwoActivitiesLifecycle

5. Kodlama

Zorluk: Kullanıcının oluşturduğu liste için bir ana etkinlik ve yaygın alışveriş öğelerinin listesi için ikinci bir etkinlik içeren basit bir alışveriş listesi uygulaması oluşturun.

  • Ana etkinlik, oluşturulacak listeyi içermelidir. Bu liste on adet boş TextView öğesinden oluşmalıdır.
  • Ana etkinlikteki bir Öğe Ekle düğmesi, yaygın alışveriş öğelerinin (peynir, pirinç, elma vb.) listesini içeren ikinci bir etkinliği başlatır. Öğeleri görüntülemek için düğme öğelerini kullanın.
  • Bir öğe seçildiğinde kullanıcı ana etkinliğe geri döner ve boş bir TextView, seçilen öğeyi içerecek şekilde güncellenir.

Bir etkinlikten diğerine bilgi aktarmak için Intent kullanın. Kullanıcı cihazı döndürdüğünde alışveriş listesinin mevcut durumunun kaydedildiğinden emin olun.

6. Özet

  • Etkinlik yaşam döngüsü, bir etkinliğin ilk oluşturulduğu andan Android sisteminin ilgili etkinliğin kaynaklarını geri alacağı ana kadar geçtiği bir dizi durumdur.
  • Kullanıcı bir etkinlikten diğerine ve uygulamanızın içinden dışına geçerken her etkinlik, etkinlik yaşam döngüsündeki durumlar arasında hareket eder.
  • Etkinlik yaşam döngüsündeki her durumun, etkinlik sınıfınızda geçersiz kılabileceğiniz karşılık gelen bir geri çağırma yöntemi vardır.
  • Yaşam döngüsü yöntemleri onCreate(), onStart(), onPause(), onRestart(), onResume(), onStop(), onDestroy() şeklindedir.
  • Yaşam döngüsü geri çağırma yöntemini geçersiz kılmak, etkinliğiniz bu duruma geçtiğinde gerçekleşen bir davranış eklemenize olanak tanır.
  • Android Studio'da Kod > Geçersiz Kılma'yı kullanarak sınıflarınıza iskelet geçersiz kılma yöntemleri ekleyebilirsiniz.
  • Döndürme gibi cihaz yapılandırması değişiklikleri, Etkinliğin kaldırılmasına ve yeniymiş gibi yeniden oluşturulmasına neden olur.
  • Yapılandırma değişikliğinde, EditText öğelerinin mevcut değerleri de dahil olmak üzere etkinlik durumunun bir kısmı korunur. Diğer tüm verileri kendiniz açıkça kaydetmeniz gerekir.
  • onSaveInstanceState() yönteminde etkinlik örneği durumunu kaydedin.
  • Örnek durumu verileri, pakette basit anahtar/değer çiftleri olarak depolanır. Pakete veri eklemek ve Paket'ten veri almak için Paket yöntemlerini kullanın.
  • Tercih edilen yöntem olan onCreate() veya onRestoreInstanceState() içinde örnek durumunu geri yükleyin. Geri