Android Lifecycle bilgisine Application sınıfı üzerinden ulaşmak

Murat Güç
2 min readFeb 17, 2019

--

Bu yazımda sizlere Application sınıfı üzerinden anlık olarak Activity’ lerin yaşam döngüsüne ulaşmanın yolunu elimden geldiğince anlatmaya çalışacağım.

Öncelikli olarak Application sınıfı nedir ?

Application sınıfı activity ve servisler gibi bileşenleri içeren temel sınıftır. Uygulamamız çalıştırıldığında ilk olarak çalışacak olan sınıf Application sınıfıdır, ve istediğimiz (gerekli olduğu) durumlarda bu sınıfı customize edebilmekteyiz.

Custom Application sınıfı nasıl yaratılır ?

Gayet basit bir işlem ile custom Application sınıfı oluşturabiliriz. Bunun için ilk yapmamız gereken işlem MyCustomApplication (istediğiniz ismi verebilirsiniz) adında bir sınıf yaratıp bu sınıfı Application sınıfına extends etmektir.

public class MyCustomApplication extends Application {
private static final String TAG = "MyCustomApplication";
@Override
public void onCreate() {
super.onCreate();
}
}

Daha sonra AndroidManifest.xml içerisinde <application> tagına android:name=”.MyCustomApplication” satırını eklememiz gerekmektedir.

<application
android:name=".MyCustomApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
... >

Lifecycle Callback’ lerine nasıl ulaşırız ?

Evet artık custom application sınıfımızı yarattığımıza göre asıl konumuz olan android lifecycle callback’ lerine ulaşma kısmına geçiş yapabiliriz.

Bunun için ilk yapmamız gereken işlem MyCustomApplication sınıfımıza extend ettiğimiz Application sınıfı içerisinde bulunan ActivityLifecycleCallbacks interface’ ini implement etmektir.

public class MyCustomApplication extends Application implements Application.ActivityLifecycleCallbacks {....}

ActivityLifecycleCallbacks interface’ inin bize sunduğu 7 adet callback bulunmaktadır.

Bu callback’ ler:

void onActivityCreated(Activity var1, Bundle var2);

void onActivityStarted(Activity var1);

void onActivityResumed(Activity var1);

void onActivityPaused(Activity var1);

void onActivityStopped(Activity var1);

void onActivitySaveInstanceState(Activity var1, Bundle var2);

void onActivityDestroyed(Activity var1);

Şimdi bu Callback’ lerimizi application sınıfı içerisinde @Override edelim.

public class MyCustomApplication extends Application implements Application.ActivityLifecycleCallbacks {
private static final String TAG = "MyCustomApplication";


@Override
public void onCreate() {
super.onCreate();
}


@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.i(TAG, "onActivityCreated: " + activity.getClass().getSimpleName() );
}

@Override
public void onActivityStarted(Activity activity) {
Log.i(TAG, "onActivityStarted: " + activity.getClass().getSimpleName());
}

@Override
public void onActivityResumed(Activity activity) {
Log.i(TAG, "onActivityResumed: " + activity.getClass().getSimpleName());
}

@Override
public void onActivityPaused(Activity activity) {
Log.i(TAG, "onActivityPaused: " + activity.getClass().getSimpleName());
}

@Override
public void onActivityStopped(Activity activity) {
Log.i(TAG, "onActivityStopped: " + activity.getClass().getSimpleName());
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.i(TAG, "onActivitySaveInstanceState: " + activity.getClass().getSimpleName());
}

@Override
public void onActivityDestroyed(Activity activity) {
Log.i(TAG, "onActivityDestroyed: " + activity.getClass().getSimpleName());
}
}

Son olarak tabiki bu Callback’ lere ulaşmak için register olmayı unutmayalım!!! Bu işlemi MyCustomApplication sınıfının onCreate() methodu içerisinde yapabilirsiniz.

@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
}

Bu son adımla birlikte artık hangi activity foreground’ da hangi activity destroy edilmiş vb. çok rahat bir şekilde gözlemleyip ona göre işlemlerinizi yapabilirsiniz.

Vaktinizi ayırdığınız için teşekkürler! İlk yazım olduğu için kusurlarımı mazur görün lütfen :). Umarım faydalı bilgiler edinebilmişsinizdir.

--

--