Android'de Etkinlik Yaşam Döngüsü ve Bazı Özel Senaryolar
Android uygulamaları kullanıcıların arayüzü sezgisel bir şekilde kullanabilmeleri için tasarlanır. Peki kullanıcılar uygulama açık iken sezgileriyle kaç farklı senaryo yazabilir? :) Tahmin edersiniz ki birçok senaryo gerçekleşebilir. Misal kullanıcı telefonunun navigasyon kısmındaki back ve home tuşlarına basabilir, üst bildirim ekranından gelen bildirim ile başka bir uygulamaya geçiş yapabilir, cihazı yan çevirip ekranı döndürebilir gibi gibi.
Bizler kullanıcı deneyimini sağlayabilmek için, bileşenlerin yaşam döngülerinin nasıl yönetileceğini iyi bilmeliyiz.
Activity’i kullanıcının uygulamaya ile etkileşime geçtiği sayfa diye tanımlarız. Ve her Activity’nin kendine ait bir yaşam döngüsü vardır.
Şimdi ise gelelim birkaç senaryo ile yaşam döngülerinin nasıl çalıştığını kavramaya;
1. Senaryo:
- Kullanıcı Back tuşuna basar veya Activity.finish() metodu çağrılırsa;
- Proje ilk ayağa kalktığında çalışacak olan metot onCreate() metodudur. Akabinde onStart() -> onResume() metotları çalışır.
- Eğer kullanıcı Back tuşuna basarsa onPause() -> onStop() ->onDestroy() metotları çalışır.
- Uygulama tekrar başlatılırsa yine onCreate() -> onStart() -> onResume() metotları sırasıyla çalışır.
- finish() metodu çağrılırsa direkt onDestroy() metoduna geçilir. Activity yaşam döngüsündeki diğer metotlar çağrılmaz.
- onDestroy() metodunda activity yaşam döngüsünü tamamlamıştır ve activity tekrar çağrılmak istenirse yaşam döngüsünün en başından yani onCreate() metodundan başlanılır.
2. Senaryo:
- Kullanıcı Home tuşuna tıklar ve tekrar uygulamayı açarsa;
- Home tuşuna basıldığında onPaused() -> onStop() metotları çalışır.
- Activity durumunu kaydetmek için onPaused() ve onSaveInstanceState(Bundle) metodları kullanılmalı.
- Home tuşuna basıp son uygulamalar kısmından uygulamayı tekrar açtığımızda veya uygulamanın ikonuna tıklayarak uygulamayı açtığımızda onRestart() -> onStart() -> onResume() metotları çalışır.
3. Senaryo:
- Cihazı yan çevirip ekran döndürüldüğünde veya bir pencere de yeniden boyutlandırma gibi değişiklikler yapıldığında;
- Bu gibi durumlarda kullanıcıların kaldıkları yerden devam etmelerini sağlamalıdır.
- Öncelikle Activity kesinlikle imha edilir ve tekrardan Activity’nin yaşam döngüsü gerçekleştirilir.
4. Senaryo:
- Uygulama sistem tarafından durdurulursa;
- Kamera ve animasyonlar gibi özel erişim fonksiyonlarının arka plandan gelmesi durumunda uygulama sistem tarafından durdurulur ve onPause() metoduna geçilir. Activity’nin tekrar çalıştırılması durumunda ise onResume() metodu devreye girer.
- onPause() metodu hızlı çalışmalıdır çünkü Activity’nin anlık bilgileri bu metod içerisinde kaydedilir.
! Buraya kadar anlattığım bütün senaryolar tek bir Activity için geçerliydi. Şimdi ise devreye başka bir Activity girdiğinde gerçekleşecek olan senaryolardan bahsedelim.
5. Senaryo:
- Kullanıcı etkinlikler arasında gezinirse;
- Activity 1 ayakta bulunuyorken Activity 2'yi çağırırsak Activity 1 onPause() metodunu çağırır. Bu metot çağrılmadan Activity 2'nin yaşam döngüsü başlatılamaz.
- Geri tuşuna tıklandığında Activity 2 yok edilir ve yaşam döngüsü biter Activity 1 ise tekrar başlatılır. Eğer bir kez daha geri tuşuna basarsak bu sefer Activity 1 yok edilir ve yaşam döngüsü sona erer.
6.Senaryo:
- Yapılandırma değişiklikleri ve gezinti ile arka yığındaki(back stack) Activityler;
- Activity 2 ön plandayken Activity 1 ise Back Stack’te tutulur. Tekrar Activity 1 odağa alındığında yaşam döngüsü yok edilir ve yine yaratılır.
- Sistem uygulamamızın sürecini her zaman öldürebilir bu yüzden herhangi bir olası durumda Activity’i yüklemeye her an hazır olmalıyız.
7. Senaryo:
- Uygulama süreci öldürülüp yeniden başlatılırsa;
- Android işletim sistemi daha fazla bellek ihtiyacı için arka planda pasif halde duran uygulamayı öldürebilir. Activity’nin durumunu kaydetmek için onSaveInstanceState öğesini kullanırız.
Facebook | Twitter | Instagram | Slack | Kodcular | Editör | Sponsor