2016-12-24 2 views
1

백그라운드에서 수행하고 싶은 두 가지 작업이 있지만 백그라운드에서 수행하고 완료되면지도를 반환하는 것이 좋을 수 있다고 생각했습니다.Android Java : 하나 이상의 작업이 작동하는 AsyncTask에서는 어떻게됩니까?

하지만 내 문제는 그 중 하나가 처리되지 않았거나 적어도 둘 다 처리해야하는지 잘 모르겠다는 것입니다.

내 코드는 다음과 같습니다.

final TextView   v = (TextView) P.findViewById(R.id.abbr); 
    final SimpleDraweeView i = (SimpleDraweeView) P.findViewById(R.id.icon); 
    new AsyncTask<Object, Object, HashMap<String, Object>>() { 
    @Override 
    protected HashMap<String, Object> doInBackground(Object... params) { 
     String k = SyncProfiles.getIcon(A, C.getNumber()); 
     Drawable dr; 
     if (k == null) { 
      dr = H.setDrawableColor(A, R.drawable.contact_user_bg, H.aoRandColor()); 
     } else { 
      dr = null; 
     } 
     HashMap<String, Object> r = new HashMap<>(); 
     r.put("bg", dr); 
     r.put("url", Images.ImageServerResize(k, 180)); 
     return r; 
    } 

    @Override 
    protected void onPostExecute(HashMap<String, Object> o) { 
     v.setText(C.getName().trim().substring(0, 1)); 
     if (o.get("url") == null) { 
      contact_bg.setBackground((Drawable) o.get("bg")); 
      i.setVisibility(View.GONE); 
     } else { 
      i.setImageURI(Uri.parse((String) o.get("url"))); 
      i.setVisibility(View.VISIBLE); 
     } 
    } 
    }.execute(); 
+0

두 번째 'AsyncTask'는 어디에 있습니까? –

+0

@ ρяσѕρєяK, 하나의 AsyncTask입니다. 두 개의 연산을 내부에서 수행하고 싶습니다. – Relm

답변

0

같은 인스턴스에서 두 번 이상 AsyncTask.execute()를 호출하지 마십시오.

// For example 
SampleTask sampleTask = new SampleTask(); 
sampleTask.execute(); 
sampleTask.execute(); //Error, IllegalStateException 
관련 문제