这是我的情况我有一个 asynctask(1)运行另一个 asynctask(2) 我需要 asynctask(1)等待直到 asynctask(2)完成,更清楚 asynctask(2)的结果用于 asynctask(1)
的结果我在 asynctask(1):
中完成了这个技巧 protected void onPostExecute(Integer integer) {
Log.e(" nbr key : "+Utils1.nbr_cle,"");
Log.e("*=======*","Démarrage de l'application *=======*");
do {
try {
Thread.sleep(300);
Log.e("======>", "Not Finished yet !");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while (!taskFinished);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
asynctask(2) 中的
@Override
protected void onPostExecute(Integer integer)
{
super.onPostExecute(integer);
SplashActivity.taskFinished = true;
int myBox_size = activityBox.realm.where(MyBox.class).findAll().size();
Log.e("MyBox Finished ","Size of mybox :" +myBox_size );
}
但它不起作用:/
答案 0 :(得分:0)
这不是一个好主意,并且由于AsyncTask
线程执行器的工作方式,可能无法工作。默认情况下,AsyncTask
实例是序列化的,因此必须在另一个实例启动之前完成。
答案 1 :(得分:0)
我所做的是在 AsynckTask (1)的PostExcute中运行第二 Asyncktask 以避免此问题,因为将第二 AsyncTask 运行到第一个中并不是一个好主意。
如果有人想使用 CountDownLatch : 这是一些参考: http://www.javamex.com/tutorials/threads/CountDownLatch.shtml