Android Java:在运行多个任务的AsyncTask中会发生什么?

时间:2016-12-24 06:31:32

标签: java android concurrency android-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();

1 个答案:

答案 0 :(得分:0)

不要在同一个实例上多次调用AsyncTask.execute()。

// For example
SampleTask  sampleTask = new SampleTask();  
sampleTask.execute();  
sampleTask.execute(); //Error, IllegalStateException