我有3个异步方法:
1 - 更新数据
2 - 验证数据
3 - 输入
目前我的课程如下:
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_sync);
....
new Update (). execute ();
new Validate () .execute ();
new Enter (). execute ();
}
假设他们都必须同时执行,但他们希望得到前一个答案。
如何在不等待前一个完成的情况下让它们全部同时运行?
答案 0 :(得分:0)
您应该在单独的线程中运行每个方法。 进行更新,验证,输入实现Runnable。 在run()方法中,调用execute()或将execute()重命名为run()。 然后
ExecutorService pool = Executors.newFixedThreadPool(poolSize);;
pool.execute(new Update());
pool.execute(new Validate());
pool.execute(new Enter());
答案 1 :(得分:0)
你可以使用 .executeOnExecutor()* 而不是.execute()来同时运行多个AsynchTask
:
*从API级别11或以后开始
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new Update().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
new Validate().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
new Enter().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else {
new Update().execute();
new Validate().execute();
new Enter().execute();
}