我已经实现了2个asyn任务,我使用的是android4.0.其中一个asyntask连续执行,第二个根据需求执行(可能是多个时间).
例如.
class AsynTask1 exetends AsyncTask{
protected Void doInBackground(Void... params) {
while(true){
publishProgress(bmp);
}
}
}
class AsynTask2 extends AsyncTask{
protected Void doInBackground(String... params){
System.out.println(params[0])
}
}
在活动课上
class MainActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new AsynTask1().execute();
int i=0;
while(i<100)
{
if(i%2==0)
new AsynTask2().execute("no is even"+i);
i++
}
}
}
在上面的例子中,不执行AsynTask2.
如果尝试使用executeOnExecutor(AsyncTask.THREAD_POOL_Executor,params),则执行asyntask并从AsynTask2获取打印消息,但这些消息不是按顺序排列的(如0 2 6 4 10 8 12 14 ….).
有没有办法连续执行AsynTask1和顺序顺序的AsynTask2,以防止顺序(如0 2 4 6 8 10 12 14 ….).
谢谢&问候
微型.
解决方法:
使用SERIAL_EXECUTOR for Asynctask2
new AsynTask2().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR ,"no is even"+i)
编辑:
用于Asynctask1,因此不使用相同的执行程序
new AsynTask1().executeOnExecutor(AsyncTask.THREAD_POOL_Executor,params);
标签:android,concurrency,android-asynctask
来源: https://codeday.me/bug/20191006/1858356.html