ANASAYFA | BLOG | SORU CEVAP | REFERANSLARIM | DOWNLOAD | HAKKIMDA | İLETİŞİM | ARAMA
ANDROİD ASYNCTASK

asyncTask android

AsyncTask, android uygulamalarımızda arka planda yapacağımız işlemlerde, yada kullanıcıyı bekletmemek, cihazı yormamak (2.3.3 den sonraki sürümlerde genellikle cihazı kapatmaya zorlayan uzun süreli arka plan işlemlerinde) kullanabileceğimiz bir yapıdır. Thread mantığıyla hemen hemen aynıdır. Kullanıcı bir işlem yaparken arka planda başka işlemler yapmada kullanabiliriz. Yada kendi başımdan geçen bir örnek, uygulamanızda Sql server bağlantısı varsa bu işlemi yapmaya sıra geldiğinde android, işlem uzun süreceğinden yada tam olarak gerçekleşme süresini bilmediğinden dolayı uygulamanızı kapatmaya zorlayabiliyor. Eski sürümlerde bunun çok kontrolü yoktu ama 2.3.3 üzerinde bunu kontrollü bir şekilde yaptırmışlar.

FK-gizle

Temel olarak işlemlerimizde kullanacağımız AsyncTask yapısını inceleyecek olursak istersek direk thread gibi kullanabilir, istersek de 3 parçalı olarak:

  1. işlemden önce yapılacaklar
  2. işlem anında yapılacaklar
  3. işlem bittiğinde yapılacaklar

şeklinde kullanabiliriz.

 

  • onPreExecute() :  Yapacağımız ana işlemden önce yapılacak işlemleri yapacağımız kısımdır. Örneğin burda bir processBar ı görünür yapıp, başlatabiliriz
  • doInBackground(Params… params) : Arka planda uzun süreli işlemlerin yapılacağı kısımdır. İlgili kodlar bu bölümde yer alır
  • onPostExecute(Result result) : Yapacağımız ana işlem biter bitmez hemen ardından çalışacak kısımdır. Örneğin burda da ilk kısımda açtığımız processBar ı durdurabilir, ekrandan kaldırabiliriz

 

AsyncTask ı hem ayrı olarak normal class yapısında tanımlayabiliriz, hemde istersek kullanacağımız class ın içerisinde inner class olarak tanımlayıp kullanabiliriz.

Çalıştırırken ise

new AsyncTaskClassName().execute();

şeklinde kullanırız.

 

Aşağıda da örnek bir kullanımı yer almaktadır. Daha ayrıntılı bilgi için tıklayın

 

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //AsyncTask işlemini başlatıyoruz
        //Bu kodu istersek bir buton a fln bağlayarak
        //gerekli yerde istediğimiz şekilde kullanabiliriz
        new AsyncTaskClassName().execute();
    }
 
        //inner Class olarak tanımladığımız AsyncTask bölümü
        //Burayı başka bir class da da tanımlayabiliriz
    class AsyncTaskClassNameextends AsyncTask<String, String, String> {
 
        @Override
        protected void onPreExecute() {
            //uzun islem oncesi yapilacaklar
        }
 
        @Override
        protected String doInBackground(String... strings) {
             //...
             //uzun islem sirasinda yapilacaklar
             //...
            return null;
        }
 
        @Override
        protected void onPostExecute(String s) {
            //uzun islem bitince yapilacaklar
        }
    }
}
 
 
 
 

 




Diğer Yazılarımdan Seçmeler...