2016-12-24 9 views
1

私はバックグラウンドでやりたい2つのタスクを持っていますが、バックグラウンドでそれらを行い、完了したらマップを返すのが良いと思いました。Android Java:複数のタスクが操作されているAsyncTaskはどうなりますか?

しかし、私の問題は、そのうちの1人が処理されていないと思うか、少なくとも両方がそこに置かれるべきかどうかわかりません。

私のコードは以下の通りです。

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

第2の「AsyncTask」はどこですか? –

+0

@ρяσѕρєяK、それは1つの 'AsyncTask'です、私は内部で2つの操作を行いたいと思います。 – Relm

答えて

0

同じインスタンスに対して2回以上AsyncTask.execute()を呼び出さないでください。

// For example 
SampleTask sampleTask = new SampleTask(); 
sampleTask.execute(); 
sampleTask.execute(); //Error, IllegalStateException 
関連する問題