Aybars Arslan

Console.WriteLine("Hello World");

Android06 – Activity Sınıfının Yaşam Döngüsü – LifeCycle

Arkadaşlar merhaba bu yazımda Android uygulamalarımızın yaşam döngülerini anlatmaya çalışacağım.

Android uygulamalarımızda kullanacağımız her activity (Ekran) bir yaşam döngüsüne sahiptir ve telefonda koşturulan(çalıştırılan) uygulamanın activitysinin cihazda bir durumu(Activity State) vardır. Buna Activity Durumu(Activity State) denir, başlıca Activity Durumları; Running, Paused, Stopped ve Killed durumlarıdır.

Bir java dosyasını Activity yapmak için. Uygulamamızda kullanacağımız bu java dosyasını activiy classından extends etmemiz gerekir. Bu extends işleminden java dosyamız activity classından kalıtılmış olacak ve böylece activity sınıfının metodlarını ve değişkenlerini kullanabilecektir.

public class MainActivity extends ActionBarActivity

Ben yukarıda ActionBar da kullandığım için MainActivity.java dosyamı ActionBarActivity’den extends ettim.

Activity’i yöneten temel olaylar;
06android1

onCreate() : Uygulamanın çalıştırılmasıyla birlikte ilk çağırılan metod onCreate metodudur.
** layout xml dosyası da onCreate() metodunun altında çağırılır.

setContentView(R.layout.activity_main);

onStart( ) : Bu metod sayesinde activity kullanıcı tarafından görülebilir olur.
onResume( ) : Activity bu metod ile kullanıcıdan girdi beklemeye başlar.
onPause( ) : Activity durdurulduğunda ve önceki activity çağırıldığında kullanılır.
onStop( ) : Activity’nin durdurulmasıdır.
onDestroy( ) : Activityler bu metod ile yok edilir yani cihazın sistem belleğinden bir sonraki sefer ki çağrılmaya kadar kapatılır.
onRestart( ) : Activity yeniden başlatıldığında çağrılır.

Sonrasında Activitymize bu metodları loglar ile ekleyip, uygulamamızda test ederek sonuçları izleyeceğiz.

Alt+Enter açılan pencereden Override Methods seçeneğine tıklayarak onStart( ), onStop( ) vs.. metodlarını ekliyoruz. İstersek kendimizde bu metodları yazabiliriz.06android2

06android5

onStart( ) metodu aşağıdaki gibi yazılmıştır.

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

NOT : Log sınıfımızı import etmek zorundayız arkadaşlar. Büyük ihtimal kırmızı bir şekilde yazıyordu Log yazısı siz Alt+Enter tıklayarak otomatik olarak import edebilirsiniz.

MainActivity.java kod bloğumuz;

package com.arslanaybars.myapplication;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;



public class MainActivity extends ActionBarActivity {

    private static final String TAG = "LogMessage";

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


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


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


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


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


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


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


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


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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

Sıra test etmeye geldi. Size de aslında önerim proje test ederek anlamanız ben daha faydalı olduğunu düşünüyorum. Studio’dan logcati açarak şekildeki gibi dolduruyoruz.
06android3

 

Artık uygulamamızı test edebiliriz.

Öncelikle uygulamamızı sanal cihazımızda çalıştırıyoruz logcat ekranımız da yazılanlar yani çalışan metodlar;

01-19 22:57:02.290 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onCreate
01-19 22:57:02.294 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onStart
01-19 22:57:02.306 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onResume

Yuvarlak tuşuna bastıktan sonra çalışan activityler;

01-19 22:57:33.902 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onPause
01-19 22:57:34.478 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onSaveInstanceState
01-19 22:57:34.478 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onStop

Kare tuşuna basıp uygulamamızı tekrar açtığımızda;

01-19 22:58:04.942 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onRestart
01-19 22:58:04.942 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onStart
01-19 22:58:04.942 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onResume

Yatay üçgene bastıktan sonra (yani geri tuşu);

01-19 22:59:06.526 2181-2181/com.arslanaybars.myapplication I/LogMessage﹕ onResume
01-19 22:59:38.410 2181-2181/com.arslanaybars.myapplication I/LogMessage﹕ onPause
01-19 22:59:38.918 2181-2181/com.arslanaybars.myapplication I/LogMessage﹕ onStop
01-19 22:59:38.918 2181-2181/com.arslanaybars.myapplication I/LogMessage﹕ onDestroy

ve son olarak kapattığımız durum;

01-19 22:58:43.422 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onPause
01-19 22:58:43.854 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onSaveInstanceState
01-19 22:58:43.854 2156-2156/com.arslanaybars.myapplication I/LogMessage﹕ onStop

Tüm logcat çıktısı ve genymotion cihazım;

06android4

 

Projemizi buraya tıklayarak indirip test edebilirsiniz.

Kendiniz inceleyerek görünce daha iyi anlayacağınızı düşünüyorum. İyi çalışmalar.

EOF

Paylaş !

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir