Android Runnable and Handler

Bahadireray
1 min readAug 24, 2022

--

Projenizde arka planda periyodik şekilde bir işlemleri gerçekleştirmek mi istiyorsunuz?

Arka planda uygulamanın çalışmasını isterken uygulamanın çöktüğünü ve uygulamayı kitleme problemiyle karşılaşırız. 'Thread.sleep(1000)’gibi çok kısa bir yöntemle bu işlemi gerçekleştiririm diyorsanız bazı noktalarda belki mümkündür lakin çoğunlukla uygulamanın çökmesine sebep olacaktır.

Örneğin bir market uygulamasında kullanıcıya düzenli olarak sepetteki ürünlerini hatırlatmak yahut belirli sürelerde google reklamları izletmek mi istiyorsunuz? Runnable ve Handler kullanmanızı şiddetle tavsiye ederim.

var number = 0
var runnable: Runnable = Runnable { }
var handler: Handler = Handler()

fun start(view: View) {
number = 0
runnable = object : Runnable {
override fun run() {
number += 1
textView.text = "Time: $number"
handler.postDelayed(this, 100)
}
}
handler.post(runnable)
}

fun stop(view: View) {
handler.removeCallbacks(runnable)
number = 0
textView.text = "Time: 0"
}

Şimdi neler yaptığımızı açıklamak istiyorum.

  • Runnable
  • Handler

Runnable, çalıştırıldığında ne yapmasını istediğimiz değişkenleri belirteceğimiz fonksiyonumuz.

Handler, çalışmasını istediğimiz fonksiyonumuz ne kadar süreyle hangi periyotla çalışmasını istiyorsak bu yapıyla ifade ediyoruz.

handler.post(runnable) //Handler'a runnable fonksiyonumuzu atıyoruz.handler.postDelayed(this, 100) //Burada çalış ve 100mili saniyede bir işlem yapmayı say diyoruz.handler.removeCallbacks(runnable) // Uygulamanın arka planda çalışmasını sonlandırmak için tekrar çağırıp durdur diyoruz.

Yapmış olduğumuz uygulamanın içerisinde kullanıcı gezinirken ona reklam izletmeyi ve örneğin 15 saniye o reklama zorunlu kılmayı istiyorsak bu yapıyı projemize uyarladığımızda işlemi gerçekleştireceğiz. Tabii belirli süre içinde Android Countdown Timer yazımı okumanızı öneririm;
https://beahadir.medium.com/android-countdown-timer-2dbe103e9270

Yazımı okuduğunuz için teşekkür ederim. İyi çalışmalar dilerim…

--

--