Mobil Programlama

Android

DERS PROGRAMI
Android 201 Ders Programı

Activity Sınıfı

Lisans: Creative Commons 26.11.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Hasibe Zafer

Activity sınıfı tarafından oluşturulan nesneler uygulama içinde kullanılan ekranları temsil ederler. Uygulamanızdaki her Activity'yi AndroidManifest.xml'de tanımlamalısınız. Eğer yeni Activity, AndroidManifest dosyasında tanımlı değilse uygulamamız çökecektir.

Her uygulamanın LAUNCHER olarak tanımlı bir Activity sınıfı olmalıdır. Bu şekilde tanımlanmış bir Activity, uygulama ilk açıldığında otomatik olarak harekete geçer ve kullanıcının karşısına çıkan ilk ekran olur.

Activity dosyaları ilk çalıştıklarında onCreate metodu devreye girer. Bu metotta genel olarak setContentView metodu çalıştırılarak bir layout dosyasından ekran tasarımı yüklenir. Eğer ekran ilk oluştuğunda tanımlanması gereken başka değişkenler ve aksiyonlar varsa, onlar da onCreate metodu içinde gerçekleştirilebilirler.

@Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        new LoadDatabaseTask().execute((Void) null);
    }

onCreate dışında bir Activity'nin yaşam döngüsü içerisinde başka metotlar da harekete geçirilir. Bu metotları sıralarsak;

  • onCreate: Activity ilk oluşturulduğunda çağırılır. Activity herhangi bir nedenden ötürü yok edilmezse (bellek ihtiyacı ya da finish metodu) bir daha çalıştırılmaz.
  • onStart: onCreate metodu çalıştırılıp görsel öğeler oluştuktan sonra çağırılır.
  • onResume: Activity herhangi bir sebepten dolayı durdurulduysa (başka bir ekrana geçiş) tekrar ekrana geldiğinde bu metot harekete geçer. Activity çalıştırılmadan önce harekete geçen son metottur. Bu metottan sonra belirlenen koda göre Activity yaşamına başlar.
  • onPause: Activity bir sebepten dolayı arka plana atılırsa harekete geçer. Bu Back tuşuna basılmasından ya da sistemin bellek ihtiyacından kaynaklanabilir. Bu metot içerisinde anlık bilgilerin kaydedilmesi önerilir. onPause işlemi hızlı çalışmak zorundadır, çünkü buradaki işlem bitmeden bir sonraki Activity harekete geçmez.
  • onStop: Activity arka plana atıldığı anda işleme girer. Bu noktada iki seçenek vardır; ya kullanıcı yeni ekrandaki işini bitirip geri gelir ya da Activity tamamen kapatılır. Kullanıcı geri geldiği takdirde onRestart metoduna geçilir ve döngü onStart metodundan tekrar başlar. Eğer kullanıcı geri gelmeyecekse onDestroy metodu çalıştırılır.
  • onDestroy: Activity'e ait bütün kaynaklar yok edilir. Activity bu noktada yaşam döngüsünü tamamlamıştır.

 

Yukarıdaki metotlar bir Activity'nin yaşamını kontrol etmemize yardımcı olur. Özellikle kullanıcı bir ayarı kaydediyorsa ya da oyun oynuyorsa ve bu sırada bir telefon konuşması başlayacaksa anlık durumları kaydetmemiz için bu metotların çalışma esaslarını bilmeliyiz.

Herhangi bir ekranın Activity sınıfı tarafından oluşturulması yeterlidir. Ancak bunun yanında Android işletim sistemi, sık kullanılan ekranlara özel Activity sınıfları sağlar. Bunlara göz atarsak;

  • ListActivity: Bir veritabanındaki veriyi listelemek ya da sunucudan gelen veriyi kullanıcıya göstermek, uygulamalarda sık rastlanan işlemlerdir. Bunun için Android işletim sistemi bize ListActivity sınıfını sunar. Standart bir layout dosyasından oluşturulan bu ekran sayesinde elimizdeki veriyi rahat bir şekilde görüntüleyebiliriz.
  • MapActivity: Harita uygulamaları için sık kullanılan bir Activity tipidir. Google Maps haritaları üzerinde işlem yapacağımız bir uygulamamız varsa bu Activity bize yardımcı olacaktır.
  • PreferenceActivity: Android işletim sistemine benzer bir kullanıcı ayar menüsü yapmayı hedefliyorsak, PreferenceActivity'den faydalanabiliriz. PreferenceActivity layout dosyasında vereceğimiz yapıya göre sunulan seçenekleri alt kategorilerle ekrana getirir. Aynı zamanda kullanıcının saklayacağı değerleri, her değere özel bir anahtar atayarak (key – value) bellekte otomatik olarak saklar.

İlerleyen bölümlerde yer alan örneklerde, bu Activity'leri kullanarak uygulamaların ekranları oluşturucağız.