AsyncTask 不能使 Object 保持足够快?

AsyncTask not keeping Object quick enough?

我基本上是通过向其中推送多个意图来启动 AsyncTask

for (int key:mappedKeys){
  fireIntent.putExtra(LEDIntentService.keyID, key);
  new AsyncStartService().execute(fireIntent);
}

但问题是 Intent 的 keyID 并不总是调用 execute() 时的那个。 在触发 Intent 之前克隆它可以修复它,但也会减慢它的速度。 在 Task 或 Runnable 中使用 mappedKeys 对我来说是别无选择。 AsyncTask 的这种行为是故意的吗?

protected class AsyncStartService extends AsyncTask<Intent,Void, Void>{
    @Override
    protected Void doInBackground(Intent... params) {
        for (int i = 0, paramsLength = params.length; i < paramsLength; i++) {
            Intent param = params[i];
            startService(param);
        }
        return null;
    }
}

它还有更多代码,但这个最小片段不起作用。 似乎 foreach 是在第一个参数被排队之前完成的,然后所有项目都具有相同的 keyID.

为什么在AsyncTask中启动服务?

根据你的代码,foreach 循环不会等待 AsyncTask 的 doInBackground,因为它不在同一个线程上,你需要为每个 AsyncTask 创建一个新的意图。