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 创建一个新的意图。
我基本上是通过向其中推送多个意图来启动 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 创建一个新的意图。