父Asynctask等待asynctask的孩子

时间:2016-02-17 15:10:29

标签: android

这是我的情况我有一个 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 );


    }

但它不起作用:/

2 个答案:

答案 0 :(得分:0)

这不是一个好主意,并且由于AsyncTask线程执行器的工作方式,可能无法工作。默认情况下,AsyncTask实例是序列化的,因此必须在另一个实例启动之前完成。

答案 1 :(得分:0)

我所做的是在 AsynckTask (1)的PostExcute中运行第二 Asyncktask 以避免此问题,因为将第二 AsyncTask 运行到第一个中并不是一个好主意。

如果有人想使用 CountDownLatch : 这是一些参考: http://www.javamex.com/tutorials/threads/CountDownLatch.shtml