Android AsyncTask Mantığı ve Kullanımı

Merhaba ; Bu yazımda Android sistemlerde AsyncTask ‘ın mantığı nedir ? ne zaman kullanılır ? gibi sorulara cevap vermeye çalışacağım. Önemli bir konu açıklık getirmeye çalışayım. Anlamaya çalışırken adım adım gideceğim en basit halinden karmaşığa doğru gideceğim. İlk olarak ; 

Nedir AsyncTask ?

AsyncTask bazı işlemleri arkaplan da gerçekleştirebilmemiz için kullanacağımız bir nesnedir. Nedir bu bazı işlemler ? İnternet’ten veri çekme, resim yükleme, bağlantı kurma gibi işlemler yapılırken belli bir zaman gecikmesi yaşanır. Bu zaman gecikmesi sırasında eğer AsyncTask gibi bir mekanizma kullanılmazsa ; Programın arayüzü donar ve kullanıcıyı da dondurur 🙂 . Bu durumu gören kullanıcı program dondu deyip kapatır. Hatta bu programı silmeye kadar gider ….

İşte bu durumlarda kullanıcıya moral bozukluğu yaşatmamak ve programın donmasını engellemek amacıyla uzun sürme ihtimali olan işlemler arkaplana atılır ve arkaplanda çalıştırılır. Hatta bu zaman zarfında kullanıcıya bir progress bar gösterip beklemesi kolaylaştırılır. Bunu sağlayan yapı AsyncTask ile kurulur.

Şimdi gelelim Nasıl kullanılacağına ;

AsyncTask abstract bir sınıftır ve kendi oluşturduğumuz bir sınıfı bu sınıfdan extend ederek kullanabiliriz. 

Bakın bir class oluşturduk ve extend ettik. Burada ” AsyncTask<String,Integer,String> ” bu ifade dikkatinizi çekebilir. 3 tane parametre alıyor. Bu parametreler override metodlarının aldığı parametreleri ifade ediyorlar. 1. parametre doInBackground() metodunun parametre türünü , 2.si onProgressUpdate() metodunun parametre türünü , 3.sü ise onPostExecute() metodunun parametre türünü ifade ediyor. 

Şimdi gelelim bu sınıfla gelen diğer yardımcı override metodlara ” Alt + İnsert ” tuşuna basınca override metodları görebilirsiniz. 

Yapıyı anladıysak haydi bir progress bar oluşturup belli aralıklarla bekleyerek progress’i dolduran bir uygulama yapalım. yapacağımız işlem her 0.5 sn. de sistemi bekleterek 100 e kadar saydırmak. Bu bekleme durumunu arka planda bırakmak.  doInBackground() metoduna arkaplanda yapacaklarımızı yazalım.

şimdi layout dosyamıza bir buton bir textview ve bir progressbar ekleyelim ve onları java sınıfımızdan çağıralım.

Evet şimdi AsyncTask yapısı içinde gerekli yerlere bilgi aktaralım. Ama bu işler buton’a basılınca başlasın .

Şimdi ….. sıra diğer overridelere bilgi aktarmaya ve göstermeye.. ve bitirmeye işte tüm kodlar açıklama  satırları mevcut anlamadığınız hususları bana yorumlar bölümünden yazabilirsiniz. 

 

 

 

Add a Comment

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