4 Mart 2015 Çarşamba

AsyncTask

android.os.NetworkOnMainThreadException
Bu hatayı ana UI threadinden network işlemleri yapmaya çalışınca alırız.
Android 4 (ice cream sandwich) ile birlikte gelen strict mode kavramı buna izin vermediğinden,
 bu tarz işlemleri bir asyncTask a yaptırmak gerekiyor.
Genel olarak ana UI threadinde donmalara sebep olabilecek uzun işlemleri (0.1 saniye psikolojik limittir deniyor)
bir asyncTaska yaptırırız. Örneğin, soket bağlantısı, download, http request, vb.
-- Örnek görevler:
Opening a Socket connection (i.e. new Socket()).
HTTP requests (i.e. HTTPClient and HTTPUrlConnection).
Attempting to connect to a remote MySQL database.
Downloading a file (i.e. Downloader.downloadFile()).
--

AsyncTask şöyle çağırılır:
MyAsyncTask.execute("url");
Burada asenkron olarak task yeni bir threadde çalışmaya başlar.
Burada execute içinde verdiğimiz String parametreleri direk doInBackground() metoduna parametre array şelinde gider.
doInBackground içinde bunları params[0] vb şekilde kullanabiliriz.
progressUpdate metodu ile gelişmeyi adım adım yazdırabilir.


Bir AsyncTask ta şu metodlar kullanılır:

-doInBackground(String... params): execute ile çağırılırken verilen String leri parametre olarak alır.
UI threadi bloklamadan kendi threadinde çalışır.

-onPreExecute() : doInBackground çalışmadan önce yapılmasını istediğimiz işlemleri buraya yazarız.

-onPostExecute() : doInBackground çalışması bittiğinde yapılmasını istediğimiz işlemleri yazarız.
doInBackground dan return edilen değeri parametre olarak alır.

-onProgressUpdate() : yapılan işlemin ne kadarının bittiğini göstermek için kullanılır

Hiç yorum yok:

Yorum Gönder