gpt4 book ai didi

android - 在android4.0中按串行顺序执行异步任务

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:31 27 4
gpt4 key购买 nike

我已经实现了 2 个异步任务,我使用的是 android4.0。其中一个异步任务是连续执行的,第二个是根据要求执行的(可能是多次)。例如。

class AsynTask1 exetends AsyncTask<Void, Bitmap, Void>{
protected Void doInBackground(Void... params) {
while(true){
publishProgress(bmp);
}
}
}

class AsynTask2 extends AsyncTask<String, Void,Void>{
protected Void doInBackground(String... params){
System.out.println(params[0])
}
}

在 Activity 课上

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对于异步任务 2

 new AsynTask2().executeOnExecutor(AsyncTask.SERIAL_EXECUTOR ,"no is even"+i)

编辑:用于 Asynctask1 ,因此不使用相同的执行器

 new AsynTask1().executeOnExecutor(AsyncTask.THREAD_POOL_Executor,params);

关于android - 在android4.0中按串行顺序执行异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com