Android-Kotlin Life Cycle

Buse DEMİR
5 min readMar 24, 2022

--

Herkese merhabalaar.

Ben deli kız Buse Demir. Yine bir sabırsızlığı ve “yok amaan önemli değildir o konu,dur önce fonksiyon yazmayı öğreniyim” dediği bir konuyla karşınızdayım. Evet Life Cycle sana da merhaba. Ben Life Cycle kardeşimizi çoğu yerde görüyordum. Yada aldığım eğitimlerde yazılarda vs. Lakin çok bilmiş junior ınız Life Ccycle için ne kadar önemli bir konu olabilir ki düşüncesiyle hep çalışmamı ileriye attım. Zaman geçtikçe mülakatlar da mı dersiniz, yazdığımız uygulamalar da “e bu komut neden en son çalıştı” sorgulamaları mı dersiniz kısacası elime ayağıma bulaştı. Meğerse yemeğimin baharatı eksikmiş. Tekrar merhaba Life Cycle :)

Life Cycle Nedir ?

Life Cycle adından da anlaşılacağı üzere “Yaşam Döngüsü” demektir. Yaşam döngüsü kavramını aslında en basite indirirsek bebeklikten yaşlılığa kadar geçirdiğimiz süre olarak adlandırabiliriz. Bu döngüde bazen duraklamalar, geçişler, hastalıklar, sorunlar bir sürü şey yaşıyoruz. Life Cycle da gözümüzde öncelikle böyle canlandırabiliriz. Şimdi bu kavramı biraz yazılım tarafına çekersek bir uygulama çalıştırdığımız zaman il olarak tıkladığınız an ne oluyor ? yada uygulamadayken telefonunuz çalıyor, arkada bekleyen uygulamaya ne oluyor ? Uygulamayı kapatmadan çıktığımızda arka planda uygulama ne yapıyor ? Bunlar gerçekten merak edilesi sorular. İşte Life Cycle sayesinde bu sorularımızın cevabını da çok güzel netleştirmiş oluyoruz.

Rönesans Tablosu :)

Yukarıda eklemiş olduğum döngü aslında her şeyi bize göstermektedir. Tabi biz bu tabloyu adım adım bi yorumlayalım :)

Activity Nedir ?

Tanım : Activity ,uygulamalar da nelerin değiştiğini, yüklendiğini bildirmesini sağlayan ve bu eylemlerle bağlantılı olarak uygulamanın ilerleyişini, sonlandırılmasını, durdurulmasını sağlamak amacı ile kullanılmaktadır. Bu sayede kullanıcı uygulamadan çıktığında ya da girdiğinde haber almamızı sağlar. Kaba taslak olarak şu örneği de verebiliriz :Bir video ya da filmi açtığımız da videoyu durdurabilir, tekrar oynatabiliriz ya da kapatabiliriz.

Acivityler bizim ekranlarımızdır. Her bir ekran başlatıldığından birbirinden bağımsız olarak bir yaşam döngüsü başlar. Activityler bir class nesneleridir. Activity classları , activity türevlerinden kalıtım almalıdırlar. Kalıtımdan dolayı da bir çok metot doğmaktadır.

İşletim sistemi yönetim yaparken olan olaylara ve etkileşimlere göre activityler içerisindeki ilgili metotların tetiklenmesini sağlar. Bir activity çalıştıktan sonra her bir adımda farklı metot tetiklenir. Tüm activityler işletim sistemi tarafından oluşturularak kontrol edilir.

Bir Activity çalışmaya başladığı andan itibaren constructor çalıştırılarak nesne belleğe çıkartılır.

Constructor Nedir ?

Nesne Yaratmak için bize neyin gerekli olduğunu söyleyen yapıdır. Nesnenin belleğe çıkması için çağrılması gereken yapıda denebilir.

  1. OnCreate() : Her daim bu activity’lerin içinde olan OnCreate neymiş bir bakalım. Evet her activity bu oncreate metottu ile başlamak zorundadır. Zaten açılışta karşımıza direk geliyor bizim müdahale etmemize gerek kalmıyor. Bir activity çalıştığı an constructor belleğe çıkarılıyor. Sonrasında ki bu ekrandaki görseller belleğe çıkarılır. Buda oncreate metottu içerisinde yapılır. Görsel nesnelerin belleğe çıkarılma işlemi yapılır. OnCreate metotunun bazı dostları da mevcuttur. Bir dostu setContentView() olup , ara yüz de oluşturduğumuz xml tasarımı göstermesini sağlar. Bütün companentlerin ve viewlerin oluşması belleğe çıkarılması işlemini yapar. Diğer dostu savedIınstanceState olup gerekli işlemleri gerçekleştirmek için ufak yardımcılar ( parametrelerinden) yardım alır.

DİKKAT ❗️

Daha kullanıcı ekranı görmedi. Yani görseller belleğe çıkarıldı tanımından kullanıcı ekranı görebiliyor düşüncesi oluşmamalı. Aslında daha her şey bellekte. Kullanıcının gördüğü hiçbir tasarım kod yok. Kullanıcı uygulamaya tıkladı ve de işlemler başlatıldı olarak düşünülmedir.

2.OnStart(): OnCreate den sonra hemen gelen ve çok hızlı çalışan bir metottur. Bir activit yi kullanıcıya görünür hale getirecek ve bu metodun yürütülmesi çok hızlı bir şekilde bitecektir.

3.OnResume() : Artık activity kullanıcı ile etkileşeme girmeye başlar. Yani Kullanıcını artık uygulamayı tam hazır şekilde erişebilmekte ve uygulamayı tek bir ekranda tasarım ve verileriyle görebilmektedir. Kullanıcı başka ekrana geçene kadar yada ekran kapatılana kadar OnResume durumunda kalacaktır.

Tartışma ⚠️

Araştırmalarım sonucunda bazı kanallar da kullanıcı ekranı OnStart da görür , Bazı kanallar da ise On Resume den sonra görülür gibi bir çakışma test ettim. Açıklık getirmek istersek. Kullanıcı uygulamanın tam halini yani kullanıma dahi hazır halini On Resume dan sonra görmektedir. OnStart da kullanıcı gördüğü UI yı başlatıldığının yeridir. Bu method çok hızlı bir şekilde gerçekleştiği için yerini hemen on Resume bırakmaktadır.

4.OnPause(): Sistem uygulamanın kapandığı bildirimini aldığı an OnPause alarmı devreye girer. Yani açılan ekran kapatılırsa yada başka bir ekrana geçiş yapılırsa on Pause ekranı çalışır. OnPause() metodu ile activity arka planda bekler. Yani uygulamamız duraklatıldığı zaman OnPause() ekranımız devreye girer ve activity beklemeye alır.

❗️❗️Onpause da belli bir süre beklettikten sonra tekrar ekranımıza dönersek , activity onResume() dan başlar. Çünkü Pause durumunda bekleme süresi belirsizdir.❗️❗️❗️

Dikkat ❗️

Uygulamamız arka plandan silinmedi yada başka bir durum ile kapatılmadı sadece farklı bir ekrana geçiş yapıldı yani activity arka planda beklemektedir. Eğer beklemeseydi ve arka planda kapatılsaydı o zaman farklı metot devreye girecektir.

5.OnStop():OnPause tanımızda bekleme süresi belirsizdir demiştik. Ancak uzun bir süre onPause da kalmak activity düşürecektir ve durumu OnStop() durumuna almaktadır.

:)

❗❗️❗️️Eğer ekrana döndüğümüz de ekran onStop() da ise bu sefer activity OnRestart-OnStart()-OnResume() ile başlar.❗️❗️❗️

OnStop() durumunda da yine beklemede kaldık. Ancak süre yine fazlasıyla uzadı. Artık işletim sistemi “sen çalışmıyorsun çekil aradan belleğe ihtiyacım var”diyor. Böyle durumlar da OnStop() kendini sonlandırır. Bu activity sonlandırmaktır. Yani ekran görsel nesnelerini sonlandırır.

❗️❗️❗️Eğer OnStop() kendini sonlandırırsa ekrana döndüğümüz zaman OnCreate() metodu ile başlarız. ❗️❗️❗️

6.OnDestory() : Artık sondayız demektir. Bu method belleği temizler ve activity ortadan kaldırır. Bütün nesneler ve kendisi bellekten düşürülür.

Android-Activity Çalışma Yapısı

Main altına kodlarımızı ekliyoruz. Bunlar bizim oluşturduğumuz fonksiyonlar değildir. Hali hazırdaki fonksiyonlardır.

Ardından debug mod da çalıştırıp , kontrollerimizi yapıyoruz.

Gördüğümüz üzere uygulama il açıldığında onResume() komutu gelene kadar ekranda bir şey göremiyoruz. onResume() komutundan sonra ekranımız tasarımıyla beraber görünüyor. Ardından ekrandan çıktığım zaman onPause oluyor ve ms cinsinden bekleme süresi ile onStop a hemen girmektedir. Ekranı tekrar açtığımda onStart ile başlamaktadır.

Sana gerekli değeri vermediğim için sorry Life Cycle ❤️

--

--

Buse DEMİR

Hello, my name is Buse. I am a computer engineer. ❤️Love Android and Kotlin❤️. Just live..