Ders 2 : Android Activity

24 Ocak 2012 Salı
Androidde uygulama geliştirmek için bilinmek zorunda olan konulardan biri de Activiyt olayı. Aslına bakarsak Activitysiz proje, program yürümez. O derece hayati önemi var.

Peki Nedir Bu Activity?

  • · Android programlamada işlemler Activity olarak tabir edilir.
  • · Bir activity bizim giriş noktamızdır ve nasıl Javada programın akışı Mainden başlıyorsa, bizim uygulamamızda bir activityden başlar.
  • · Daha iyi anlaşılması için, bir activityi kullanıcıyla iletişimde olan bir form gibi düşünebiliriz. Örneğin; bir mesajlaşma uygulamasında, mesaj gönderilecek kişiyi seçmek için kişileri listeleyen bir activity olabilir.İkinci activity, seçilen kişiye mesaj yazılmasını sağlarken bir diğer activityde gönderilen mesajları gösterebilir. Burada tüm activityler birlikte çalışıyor gibi gözükse de her activity birbirinden bağımsız çalışır ve hepsi de activity sınıfının alt sınıflarıdır.
Yani:

Public class Ornek extends Activity {}  


örneğinde olduğu gibi Activity sınıfı mutlaka extend edilmelidir.

  • · Bir uygulama tek bir activitye ya da mesajlaşma uygulamasındaki gibi birçok activitye sahip olabilir. Genelde uygulamalar ilk açıldıklarında aktif olan bir activity ve o activity aracılığı ile aktive edilen diğer activityler şeklinde çalışır.
  • · Yeni bir activity başlatıldığında mutlaka AndroidManifest.xml içinde activity olduğunu belirtmemiz gerekir.


  • · Activity, Android SDK ile birlikte gelen bir sınıf yapısıdır. Her bir Activity içerisinde ‘onCreate’, ‘onPause’, ‘onDestroy’ gibi hazır fonksiyonları bulundurur. Bu fonksiyonları Eclipse menüsünde ‘Source’ kısmındaki ‘Override/Implement Methods’ kısmından Activitye dahil edebiliriz.


  • · Her ekran için bir activity uygulanır.
  • · Activityler birbirlerini çağırabilirler. Aralarında veri transferi yapabilirler.
  • · Her bir activity nesnesi Linux process yapısına sahiptir.
  • · Activityler, view nesnelerini kullanarak işlem gerçekleştirirler.
  • · Bir activity başlatmak pahalıya mal olabilir. Yeni bir Linux işlemi başlayacak ve bu işlem için hafızada yer tahsil edilecek, kullanıcı arayüzü nesneleri, XML Layoutlar yüklenecek. Bunlar olurken belirli bir süre geçecek. Bu zaman kaybını önlemek için activitylerin yaşam döngüsünden sorumlu olan “Activity Manager” vardır.

Activity Metotları

  • · onCreate(): Activity ilk yaratıldığında çalışır. Bundan sonra onStart() methoduna geçilir.
  • · onStart(): O activityi kullanıcıya görünürken çalışır. Bundan sonra onStop() ya da onResume() çalışabilir.
  • · onResume(): Bu çalıştığında kullanıcı ile etkileşim başlar. Tüm inputlar gelmeye başlar. Ardından onPause() çalışabilir.
  • · onPause(): Activity geçici olarak durur. Bir önceki activity onResume() olurken bu activity onPause() olur. Ardından onResume() ya da onStop() çalışabilir.
  • · onStop(): Activity kullanıcıya uzun süre görünmeyince çalışır. onRestart() ya da OnDestroy() bundan sonra çalışabilir.
  • · onRestart(): Activity daha önce stop olmuşsa, yeniden çalışmaya başladığında çalışır. Peşinden mutlaka onStart() çalışır.
  • · onDestroy(): Activity tamamen sonlanmadan önce çalışır. Peşinden bir şey çalışmaz.

Not 1: onDestroy(), onStop(), onPause() durumlarında uygulama, sistemin belleğe ihtiyaç duyması durumlarında tamamen bellekten yok edilebilir.

Not 2: onCreate() metodunda genellikle başlangıç işlemleri yapılır ve ardından ‘SetContentView’ metodu ile kullanıcı arayüzü, kullanıcıya gösterilerek aktivite başlatılmış olunur. Activity sınıfından türetmiş olduğumuz sınıflar, bir üst sınıfın yani activity sınıfının OnCreate() metodunu çağırmalıdır. Aksi halde istisna oluşmaktadır.

Not 3: Yeni bir activity başlatıldığında bir önceki activity stop konumuna geçer. Android OS bir önceki activityi bir yığına atarak onu korur. Bu yığına “back stack” adı verilir ve bu yığın “last in first out” algoritmasına göre çalışır. Örneğin; bir önceki ekrana gelmek istediğimizde yığından activity bilgileri alınır ve bir önceki ekran stop durumundan resume durumuna geçirilir.

Örnek:

package org.example; import android.app.Activity; import android.os.Bundle; public class Ornek extends Activity {  public void OnCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView ( R.layout.main); }   }


Bu kodun yaptığı tek şey Activity sınfından yeni bir sınıf türetmektir. Android uygulamalarındaki tüm aktiviteler ( ya da ekranlar) bu sınıftan türemek zorundadır. Yeni türetilmiş olan bu sınıfın orijinal sınıftan tek farkı onCreate() metodunun override edilmiş olmasıdır. Yeni override edilmiş metot şu haliyle 2 şey yapıyor: Bunlardan ilki orijinal Activity sınıfının yapıcı metodunu çağırmaktır. Diğeri ise setContentView metodunu kullanarak aktivitenin ekranda göstereceği içeriği, bizim main.xml adlı dosyada tanımladığımız arayüz olarak tanımlamaktır.

Son olarak gene tekrarlıyorum, eğer bir eksiğim aksağım varsa bir babayiğit çıksın,söylesin.Ben de düzelteyim, doğrusunu öğreneyim.

2 yorum:

  1. SlymnOzdmrc dedi ki...:

    Merhaba peki buttonla yeni bir activity acabiliyoruz ancak benim yapamadıgım sey actıgım yeni activiteden tekrar yeni bir activity acmak. orneklemek gerekirse ana ekranımda projeler butonu var buna tıklayınca yeni activity acılıyor buraya kadar sorun yok projelerin icine yakında planlanan diye iki tane buton koyuyorum ancak bunlara basınca yeni activity acılmıyor bu nasıl yazabiliriz.

  1. SlymnOzdmrc dedi ki...:

    Merhaba peki buttonla yeni bir activity acabiliyoruz ancak benim yapamadıgım sey actıgım yeni activiteden tekrar yeni bir activity acmak. orneklemek gerekirse ana ekranımda projeler butonu var buna tıklayınca yeni activity acılıyor buraya kadar sorun yok projelerin icine yakında planlanan diye iki tane buton koyuyorum ancak bunlara basınca yeni activity acılmıyor bu nasıl yazabiliriz.

Yorum Gönder