Etkileşim elemanı , Windows'ta pencerelere benzetilebilir.
Birden fazla da olabilir.
Hiç de olmayabilir.
Her bir activity elemanının minimum Activity sınıfından türetilmesi gerekir.
Activity sınıfı android.app içerisindedir.

Activity genel olarak görsel elemanlar barındırır.Bu elemanlar xml dosyasından veya dinamik olarak kodla oluşturulabilir.

Hangi activitiy'nin mainActivity olduğu Android_Manifest.xml dosyasından belirlenir.

Android SDK içerisinde bulunan her sınıf ve paket en tepede android isimli bir paket içerisinde bildirilmiştir.

App Life Cycle

LifeCycle


Anahtar Not:

Androidde basit bildirimler için Toast kullanılabilir.

Toast.makeText(this ,"Text" , Toast.LENGTH_LONG).show

onCreate()

  • Program açılırken ilk çağrılan metodtur.
  • View'in yüklendiği ve ayarlandığı yer onCreatedir.
  • Activity burada görünür değildir.

onStart()

  • Activity bu metotdan sonra görünürdür.

onResume()

  • Activity görünür olduğunda ilk çağrılan metoddur.
  • Activity kullanıcıyla etkileşim halindedir.(Activity Running)

onPause()

  • Activity görünür durumdayken başka bir activity o activity'nin önüne geçiyorsa onPause çağrılır.
  • bu metod çağrıldıktan sonra Activity destroy edilmez ama görünür değildir.
  • onPause metodunun çağrıldığı durumlar:

    • Home tuşuna basılması (onPause > onStop)
    • Arama gelmesi , alarmın çalması (sisteme ait interruptlar)
    • Aktif activity'nin önüne başka bir activity gelmesi
      • Whatsapp konuşma listelerinde bir kişi seçildiğinde konuşma listesi activityisi onPause metodunu çağırır.
      • Mesajlar uygulamasında Tüm mesajlar ekranından bir mesajın seçilmesi durumunda Tüm mesajlar ekranı onPause metodunu çağırır.
      • Settings menüsünde bir alt ayar menüsüne girilmesi.
  • Activity'nin yok edilmesi sırasında veri kayıplarını engellemek için yedekleme işlemlerinin onPause()'da yapılması mantıklıdır.

onRestart()

art > onResume çağrılır.

onStop()

  • Activity arka plana alınacaksa activity sırayla onPause > onStop > onDestroy metodlarını çağırır.

onDestroy()

  • Geri tuşuna basılırsa onPause > onStop > onDestroy çağrılır.
  • Screen orieantation'da ya da Arkaplan uygulamalar sonlandrıldığında çağrılır.

Anahtar Not:
Tüm bu metodlar override edilirken super metodları çağrılmalıdır.


WhatsApp İçin Olası Seneryolar

Whatsapp'ın İlk Çalıştırılması

  • onCreate > onStart >onResume

Whatsapp Ekranı Açıkken Arama Gelmesi

  • onPause

Whatsapp Ekranı Açıkken Alarm Çalması

  • onPause

Whatsappta Kullanıcı Listesi Sayfasındayken kişi seçip konuşma sayfasının açılması

  • Kullanıcı Listesi Sayfası : onPause
  • Konuşma Sayfası : onCreate > onStart > onResume

Konuşma sayfasındayken BACK tuşuna basılması

  • Konuşma Sayfası : onPause > onStop > onDestroy
  • Kullanıcı Listesi Sayfası : onResume

Kullanıcı Listesi Sayfasındayken BACK tuşuna basılması

  • onPause > onStop > onDestroy

Kullanıcı Listesi Sayfasındayken HOME tuşuna basılması

  • onPause > onStop

Konuşma Sayfasındayken HOME tuşuna basılması

  • Konuşma Sayfası : onPause > onStop
  • Kullanıcı Listesi sayfası : onPause > onStop

HOME tuşuyla kapatılan Whatsapp'ın tekrar açılması

  • onRestart > onStart > onResume

Ekranın Yan Çevirilmesi

  • onPause > onStop > onDestroy > onCreate > onStart > onResume

Activity Sınıfının onCreate metodunun Parametrik yapısı

Bilindiği gibi onCreate metodu bazı durumlarda önceden çağrılmış olabilir. (screen orientationdan sonra gibi).

Bu durumda programcı açısından bir activity'nin ilk kez mi yaratıldığı ya da screen orientation gibi bir durumda yokedilip otomatik mi yaratıldığı önemli olabilir.

onCreate ilk çağrıldığında Bundle parametresi null döndürür.
Screen orientation durumunda ise bundle'ı döndürür.

Bundle genel olarak HashMap sınıfına benzerdir.

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

    if(savedInstanceState == null)
      Toast.makeText(this ,"ilk acilis" , Toast.LENGTH_LONG).show();
    else
      Toast.makeText(this, "Auto Destroy and ReCreate", Toast.LENGTH_SHORT).show();
}

Activity'i kapatmak için

this.finish();

bu metod çağrıldığında onPause>onStop>onDestroy metodları çağırılır.