AsyncTask Kullanımı | Android

A

Android uygulamaları geliştirirken; uygulama arayüzünün yüklenmesi veya yenilenmesi durumlarında, kullanıcıyı bilgilendirmek için AsyncTask kullanımına ihtiyaç vardır. Diğer türlü arayüz üzerinde işlem yapmak mümkün değildir.

AsyncTask’i hem inner class olarak hem de ayrı bir class olarak kullanmak mümkün. Ben bu yazıda inner class olarak kullanacağım.

Yapılacaklar sürerken -bitene kadar- ekrana bir ProgressDialog penceresi koymak ihtiyacı olsun. Bunun için, bahsedilen işlemlerin AsyncTask üzerinde ilerlemesi; işlemler öncesinde ve sonrasında Dialog penceresinin kontrol edilmesi gerekli.

Şimdi anlattıklarımızı koda dökelim:

[code lang=”java”]

public class OrnekActivity extends Activity {

@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
   new myAsyncTask("Mesaj").execute("a", "b", "c");
}

private class myAsyncTask extends AsyncTask<String, Void, ArrayList>{

String message;
ProgressDialog dialog;

public refreshTask(String message) {
this.message = message;
this.dialog = new ProgressDialog(OrnekActivity.this);
}

@Override
protected void onPreExecute() {
dialog.setMessage(message);
dialog.setIndeterminate(true);
dialog.setCancelable(true);
dialog.show();
}

@Override
protected ArrayList doInBackground(String… params) {
String prm = params[0];
String prm1 = params[1];
// diğer işlemler

return ArrayList;
}

@Override
protected void onPostExecute(ArrayList result) {
// sonuç işlemleri (intent vb)
if(dialog.isShowing)
dialog.dismiss();
}
}
}

[/code]

Uygulama çalıştığında AsyncTask olarak tanımlanmış myAsyncTask çalışacaktır. AsyncTask oluşturulurken gönderilenler Constructor’a, execute metodu ile gönderilenler ise doInBackground metoduna gider.

Ayrıca inner class tanımını yaparken kullanılan <String, Void, ArrayList> tanımı sırasıyla gönderilecek parametre tipi, işlemler yapılırken kullanılacak parametre tipi ve işlemler sonucunda geri döndürelecek veri tipidir.

AsyncTask içerisine veri gönderilmeyecek ve alınmayacaksa bu parametrelerin her biri Void olarak belirtilmelidir.

1 Yorum

  • Güzel bir anlatım olmuş.Anroide yeni başladım takıldıgım bazı kodları araştırırken bu blogu buldum faydalı oldu benim için.Yazılarınızın devamını bekliyorum.iyi çalışmalar.

Oğulcan

Arşivler

Kategoriler