我们在Android中执行AsyncTask的正常方式是,从Android API:
private class DoIntenseTask extends AsyncTask<Object, Object, Void> {
protected Void doInBackground(Object... params) {
for (Object param : params) {
Object rtnObj = doIntenseJob(param);
publishProgress(rtnObj);
}
return null;
}
protected void onProgressUpdate(Object... progress) {
for (Object rtnObj : progress) {
updateActivityUI(rtnObj);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的紧张任务是松散耦合的,执行顺序并不重要,通过这种方式,分配一个线程来运行一系列紧张的任务.我个人认为这是一种中途解决方案.是的,紧张的工作不再在UI线程中运行,但仍然需要逐个执行(在很多情况下,我们面临着一份紧张的工作列表,我认为这也是为什么AsyncTask中的方法是多参数化的原因).谷歌应该使API更具可重用性,以解决不同类型的场景.
我真正喜欢的是由线程池(例如poolSize = 5)并行运行多个doIntenseJob().看起来google确实通过AsyncTask.executeOnExecutor()提供了一个解决方案,但遗憾的是,自API级别11以来才可用.我正在开发移动应用程序,并想知道是否有一个解决方法,我可以在API级别11下实现相同的行为.
在此先感谢
Y.