AsyncTask işlemin gerçekleşmesi için belli bir süreç gereken işlemlerde kullanılmaktadır. Örneğin internetten veri çekme, veri gönderme veya json parse etme gibi… Bu gibi işlemlerde işlemin gerçekleşmesi internet hızına ve çeşitli çevresel faktörlere bağlıdır. Bu gibi durumlarda kullanabileceğiniz progressdialog’dan bahsettim yazımda. Ayrıca aşağıdaki örnekte get ile dönen JSON listesinin (örneğin iller listesi) nasıl parse edilip spinner içerisinde gösterileceğini görebilirsiniz.
public class getil extends AsyncTask<String, Void, Void> { String eleman="b"; List<String> liste = new ArrayList<String>(); private ProgressDialog dialog; //Tanımlandı public getil(KayitOl activity) {//Yapılandırıcı ile yeni bir dialog oluştur//uldu. dialog = new ProgressDialog(activity); } @Override protected Void doInBackground(String... params) { try { URL json = new URL("get method url"); URLConnection jc = json.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream())); String line = reader.readLine(); JSONArray jsonDizi=new JSONArray(line); for (int i = 0; i < jsonDizi.length(); i++) { JSONObject c = jsonDizi.getJSONObject(i); eleman=c.getString("City"); liste.add(eleman); } reader.close(); } catch(Exception e){ Log.d("Hata : ", e.getMessage()); } return null; } @Override protected void onPostExecute(Void result) { //AsyncTask bittiğinde eleman bos mu dolu mu ? Log.d("İşlem : "," tamamlandı."); il=(Spinner)findViewById(R.id.illistesi); ArrayAdapter<String> data = new ArrayAdapter<String>(getApplication(), android.R.layout.simple_spinner_item, liste); data.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); il.setAdapter(data); //Dialog gösteriliyor ise kapat. if (dialog.isShowing()) { dialog.dismiss(); } } @Override protected void onPreExecute() { //Dialog mesajı ayarlar ve göster. dialog.setMessage("Yükleniyor..."); dialog.show(); } @Override protected void onProgressUpdate(Void... values) { } }