Android – Android Mimarisi, Activity ve Fragment!

android-code

Android’e kod yazmamız için gerekli Android Studio ve gerekli programların nasıl yükleneceğinden bu yazımızda, Android Studio’nun arayüzünden bu yazımızda bahsetmiştik.

Bu yazımızdan itibaren artık ellerimizi Android kodlarını yavaş yavaş bulaştırmaya başlayacağız. Fakat ondan önce bilmemiz gereken şey android mimarisi. Yani Android platformunda kod yazmaya geçmeden önce çok kısa Android Mimarisi üzerinde duracağız.

Android Mimarisi 

Android Mimarisi 5 katmandan oluşur. Bunlardan ilki ve en alt katmanı Linux Kernel (Linux Çekirdek) katmanıdır. Bu katman aynı zamanda yazılım ile donanımın birleştiği yerdir. Onun üzerinde Libraries (Kütüphaneler) bulunur.  Android Runtime (Android Çalışma Zamanı) katmanında ise çekirdek kütüphaneler yani sistemin kerneline ait kütüphaneler ve Dalvik Virtual Machine (Dalvik Sanal Makinesi) bulunur. Dalvik Sanal Makinesi, JWM ile yaklaşık olarak aynı mantığa sahiptir. Dalvik Virtual Machine hakkında daha detaylı bilgiye buraya tıklayarak ulaşabilirsiniz , Application Framework (Uygulama Çatısı) katmanında bir nevi sistem servisleri bulunur. Location Manager, Notification Manager vb.ve en üst katmanda da Applcations (Uygulamalar) bulunur. Bu katmanda hem sistem uygulamaları (Rehber, Launcher, Arama vb.) hem de kullanıcı uygulamaları bulunur.

Android Programlama – Activity ve Fragment!

Bu girişten sonra Android Programlamaya yavaş yavaş başlayalım. Yazının burasından sonrasına ait ekran görüntüleri ve bazı detaylar Android Studio üzerinden anlatılacaktır. Android Studio’yu indirmek için bu yazının başında verdiğim ilgili yazılarımı okuyabilirsiniz.

Android Studio’yu açıp yeni bir proje oluşturuyoruz. Bu işlemi bir önceki yazıda anlattığım için atlıyorum. Projeyi oluştururken 3. Ekranda bizden Android API Level (versiyon) seçmemizi isteyecektir. Aşağıdakine benzer bir ekran ile karşılaşacaksınız.

android-studio-3

Burada API Level bizim uygulamayı yazmak istediğimiz minimum API versiyonudur. Her API versiyonun farklılıkları mevcuttur. Bu farklılıklar işletim sisteminin servis çağrılarından ekrandaki bir TextView’in içindeki metni değiştirmeye kadar farklılık gösterir. Bir ipucu olarak API versiyonunu minimum tutmak uygulamanızı destekleyen cihaz kapsamını artıracaktır. Benim önerim Android 4.0 yani API 14 ile geliştirmenizdir. Zira hem güncel API kullanmış hem de kapsama oranınızı artacaktır. Android API versiyonları ile ilgili bilgiye ulaşmak için buraya tıklayın.

android-studio-4

Bir sonraki ekranda Activity eklemek isteyip istemediğimizi soruyor. Burada bu yazımızın ana konusu olan genel tanımlar kısmına geldik. 2 adet genel tanımımız mevcut. Biri Activity, diğeri de Fragment kavramları.

Acivity Nedir? 

Acitivy, uygulamızın ön planda görünen ve arka planda çalışan bölümüdür. Acivity XML formatında bir layout dosyası ve Java dilinde bir class‘dan meydana gelir.  Her bir Acvitiy’nin kendine ait bir yaşam döngüsü vardır. Bu yaşam döngüsünü ve çalışma sırasında Activity’i sizlere açıklıyor olacağım.

Activity’nin Yaşam Döngüsü (Activity Lifecycle) 

Activity_LifeCycle_TR

Yukarıdaki resmi kısaca özetlersek:

Bir Activity Çalışmaya başladığı zaman sırasıyla Activity class‘ına ait onCreate(), onStart() ve onResume() methodları çalıştırarak çalışmaya başlar. Kapatıldığında ise sırasıyla onPause(), onStop() ve bellekten silindiği method olan onDestroy() methodları çalışır.

Bu fonksiyonları normal zamanda görmemize veya Override edip içini doldurmamıza gerek yok zira biz dokunmadığımızda kendi işlevini yerine getirmektedir. Fakat ekrandan bir TextView bulup onun fontunu veya yazısını değiştireceksek yani kısacası layout’da bulunan bileşenlere ulaşacakken bunları bileşenler View’a yani ekranda gösterime girdikten sonra yapmamız hata almamızı engelleyecekti. Bunun da yeri layout dosyasındaki bileşenler çalışmaya onCreate() methodunun içindeki setContentView() method çağrısından sonrasıdır.

Fragment Nedir? 

Fragment class’ı ve kavramı Android API 11 ile gelmiştir. Fragment‘lar da aynı Activityler gibi bir class ve bir layout dosyasından oluşurlar. En önemli farkı activity’lere göre daha hızlı ve performanslı olmaları. Aynı ekranda iki farklı Activity çalışamazken iki veya daha fazla farklı fragment çalışabilmektedir. Fakat bir Fragment Activity gibi kendi başına direkt olarak çalıştırılamaz. Fragment bir Activity içerisinde çalıştırılması gerekmektedir.

Fragment’ın Yaşam Döngüsü (Fragment Lifecycle) 

Fragment LifeCycle (TR)2 (2)

Bir Fragment, bir Activity’e eklendiğinde sırasıyla onAttach(), onCreate(), onCreateView(), onViewCreated(),onStart() ve onResume() methodları çağrılır. Fragment değiştiğinde veya ön planda başka bir uygulama açıldığında ise önce Fragment’ın onPause() methodu çağrılır. Fragment değiştirilir veya kapatılırsa onStop(), onDestroyView(), onDestroy() ve onDetach() methodları çağırılır.

Fragment’ın Activity’e Eklenmesi & Çalışması

Fragment çalışmak için Activity’e ihtiyaç duyar. Peki o zaman burada Activity – Fragment arasıda bir ilişki var olmalıdır. Bu ilişkiyi method boyutunda inceleyelim.

Fragment bir activity’e eklendiğinde aslında kendi class’ında de belirli fonksiyonlar tetiklenir. Bunun nedeni Fragment’ın layout’unda yer alan bileşenlerin (components) View‘e eklenmesidir. Bu eklenme sırasında ekrandaki görüntü (View) yeniden oluşturulur.

Fragment ve Activity’nin Yaşam Döngülerini (Lifecycles) konsola yazdırarak da gözlemleyebiliriz. Bunun için methodları Activity ve Fragment’larımızda Override ederek, bu methodların içinde “Log.i” ile işletim sisteminin logcat‘ine yazdırdık ve bunu da Android Studio‘dan gözlemledik.

activity

Activity‘mizin classında Override ettiğimiz methodlarını ve çalışma sıralarını logcat‘e yazdırdık. Sırasıyla onCreate(), onStart() ve onResume() methodlarının çalıştığına dair bilgileri yazdırdık.

fragment

Aynı şekilde Fragment classımızdan da gerekli methodları Override ettik ve sırasıyla onAttach(), onCreate(), onCreateView(), onViewCreated(), onActivityCreated(), onStart() ve onResume() fonksiyonlarının Fragment’ın Activity’ye eklenmesi sırasında çağırıldığını gördük.

Activity ve Fragment’ların çalışmasına dair örnek Test projesini GitHub linkine buraya tıklayarak ulaşabilirsiniz. Ayrıca GitHub üzerinden paylaşacağım bütün projeler için de buraya tıklayarak erişebilirsiniz.

Bundan sonraki yazılarda artık kod örnekleriyle devam edeceğiz. İnternetten veri indirme, Asenkron işlemler, animasyonlar, API bağlantılar, konum bilgisi vb. kullanarak basit uygulamalar yazacağız. Sormak istediğiniz bir yer olursa bu yazının altına yorum yazabilir veya metehantoksoy@gmail.com adresimden bana e-posta atabilirsiniz. Takipte kalın! Herkese mutlu seneler!

Ac

Reklamlar

Android – Android Mimarisi, Activity ve Fragment!” üzerine 9 yorum

  1. Geri bildirim: Android – ListView ve Custom Adapter Kullanımı | Metehan Toksoy
  2. Metehan yazılarını severek okuyor ve çok Verımlı buluyorum. Ekmeğinden dolayı çok teşekkürler

  3. IOS uygulamaları yapabileceğim.ancak sizin tarzınızda anlatım yapan tavsiye edebileceğiniz linkler varmı acaba.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

w

Connecting to %s