Activity Bileşeni (Mobil Uygulamalar Dersi)

Merhaba, bu yazı ile sizlere Activity bileşeni hakkında temel bilgiler verdikten sonra örnek bir uygulama ile yazıya son vereceğiz. (Android Programlama ve Uygulama Rehberi isimli kitabımın 4.Bölümü olan Activity Bileşeni kısmından alınmıştır. )

Activity Nedir?

Activity(Etkinlik) bir uygulama bileşenidir. Bu bileşen kullanıcılar ile uygulama arasında iletişimi sağlayan ve kullanıcıların uygulamalar üzerinde işlemler yapmasına olanak tanıyan tek bir ekranı temsil eder. Activity(Etkinlik) bir sınıftır, bir uygulama da arayüz olmasını istediğimizde bu sınıftan extend ederek bir ekran oluşturabiliriz. Cep telefonlarında arama yapmak, bir resim çekmek veya bir email göndermek için arayüze ihtiyacımız var. Bu ihtiyacı doğrudan sağlayan Activity sınıfıdır. Ekranlar genellikle ekranı doldurur fakat ihtiyaç halinde küçük pencerelerde oluşturulabilir. Bu kavramı kitabımızda Türkçe “Etkinlik” olarak kullanacağız.

Activity Oluşturmak

Bir etkinlik oluşturmak için Activity sınıfı kullanılır. Bu sınıftan extend anahtar kelimesi ile yeni bir ekran oluşturabiliriz. Oluşturulan ekran java uzantılı bir dosyadır ve Activity sınıfının, bir subclass yani alt sınıfıdır.  Oluşturulan bu altsınıfta bazı metotların eklenmesi gerekiyor. Etkinlik bileşeni çeşitli durumlar arasında geçiş yaparken sistem bu metotları çağırır. Ör: etkinlik oluşturulduğu zaman onCreate() metodu çağrılır.

Activity Başlatmak

Uygulama içinde başka bir etkinlik başlatmak için startActivity() metodu kullanılır. Bu metot için tanımlayacağımız bir intent yardımıyla activity bileşenini başlatırız. Bir intent nesnesi activity bileşenini başlatmak için ihtiyaç olan bilgileri taşır. Örnek bir kullanım aşağıdaki gibidir.

Intent intent=new Intent(this,Main2Activity.class);
startActivity(intent);

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

Bir etkinlik genel olarak 3 duruma sahiptir.

Resumed State(Devam Etme Durumu), Etkinliğin kullanıcıya gösterildiği ve kullanıcının etkinlik ile iletişim kurduğu durumu gösterir. Buna running(çalışıyor) durumu da denir.

Paused State(Duraklatıldı Durumu), Başka bir etkinlik gösterilirken bulunulan durumdur. Böyle olan bir etkinlik tekrar çalıştırılabilir, kullanıcıya görünebilir, etkinlik hayattadır ve yaşam döngüsü  devam ediyordur.

Stopped State(Durduruldu Durumu), Etkinlik bu durumda başka bir etkinlik tarafından kapatılmıştır. Etkinlik bu durumda “background” yani arkaplana itilir. Etkinlik bu durumda yaşam döngüsüne devam eder,  hayattadır, bellekte tutulur, tüm durumlar ve bilgiler korunur.

Yaşam Döngüsü Metotları

Bir etkinlik için temel yaşam döngüsü metotları aşağıdaki gibidir.

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Activity oluşturulur.
    }

    @Override
    protected void onStart() {
        super.onStart();
        // Activity görünür olmak üzeredir.
    }

    @Override
    protected void onResume() {
        super.onResume();
        //Etkinlik görünür hale gelmiştir. Kullanıcı etkinliği görebilir. Burası etkinlik 
        //için “resumed” durumudur.
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Bu durumda başka bir etkinlik ile çalışılıyor. Bu durum “paused” durumudur.
    }
    @Override
    protected void onStop() {
        super.onStop();
        // Etkinlik uzun zaman görünmez. Bu durum “stopped” durumudur. 
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // Etkinlik yok edilmek üzeredir ve yok edildiğinde çağrılır.
    }
}

Aşağıda bir activity için yaşam döngüsü verilmiştir. Dikdörtgen olan şekiller metotları ifade ediyor.

Yaşam Döngüsü Metotları

Activity lifecycle(yaşam döngüsü) Mantığını Anlamak

Bu başlık altında Activity yaşam döngüsünün ve metotlarının nasıl çalıştığını ele alacağız.

MainActivity.java

Bu yapı uygulama için ihtiyaç duyduğumuz arayüzü oluşturmayı sağlamaktadır. Activity bileşenine ait metotların hangi durumlarda nasıl tepki verdiğini ölçmemizi sağlayan bir test uygulamasıdır. Aşağıda verilen kodların anlaşılması ve ekran çıktılarının incelenmesi son derece önemlidir.

package com.mas.activitylifecycle;

import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("Lifecycle","onCreate()");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("Lifecycle","onStart()");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("Lifecycle","onResume()");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("Lifecycle","onPause()");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("Lifecycle","onStop()");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("Lifecycle","onRestart()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("Lifecycle","onDestroy()");
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.i("Lifecycle","onSaveInstanceState()");
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.i("Lifecycle","onRestoreInstanceState()");
    }
}

Uygulama ilk başladığı zaman “logcat” ekranı aşağıdaki gibi olur. (Logcat ekranı, uygulama derlendikten sonra otomatik olarak açılır. Ancak manuel erişim için Android Studio ortamında View->Tool Windows->Logcat yolu izlenmelidir)

Metotların çalışma sırası onCreate() ->onStart() ->onResume() şeklindedir.

Eğer cihazın “home” tuşuna tıklanırsa logcat ekranı aşağıdaki gibi olur.

Home tuşuna basıldığı zamanda onPause() -> onSaveInstanceState() -> onStop() metotları sırasıyla çağrılır.

Bu uygulama ile bir activity bileşeninin yaşam döngüsünü anlamaya çalıştık. Sonraki çalışmada görüşmek üzere…