onPostExecute(Result)方法执行的顺序是什么?我可以更改它吗?

时间:2012-12-24 18:33:57

标签: android android-asynctask

我正在实现一个非常简单的任务 - 用户授权。我通过AsyncTask实现的所有网络操作。我有一个问题。我有两个AsyncTasks - 一个是授权,它为所有网络任务操作(JSON解析,REST实现等)调用更低级别和通用,这也是通过AsyncTask实现的。我有一个问题:这两个操作的onPostExecute方法以错误的顺序调用。

所以问题 - 我可以设置执行的顺序,或者你可以给我一些建议如何以正确的方式处理所有这些。但不建议我拒绝AsyncTask并使用其他东西。我想要一个正确的AsyncTask解决方案。提前致谢。

2 个答案:

答案 0 :(得分:1)

听起来你应该有一个AsyncTask用于高级后台操作。应在高级doInBackground中直接调用低级别网络活动。通过运行两个AsyncTask,您将失去轻松协调其个人工作时间的能力。

如果出于某种原因,您需要在AsyncTask中独立运行较低级别的操作(即,用于授权以外的目的),那么AsyncTask也应该直接调用低级别的操作来自自己doInBackground的网络活动;但是,低级活动仍应与任何AsyncTask分开。

答案 1 :(得分:0)

运行tour 2. asyncTask in 1. first asyncTask onPostExecute方法。顺便说一句,你可以自己设定订单。

如下所示,

 private class task1 extends AsyncTask<URL, Integer, Long> {

     protected int doInBackground(URL... urls) {
         // do your stuf
         return 1;
     }


     protected void onPostExecute(int result) {
           // first task finished and second task starts
           new task2().execute();
     }
 }


private class task2 extends AsyncTask<URL, Integer, Long> {

     protected int doInBackground(URL... urls) {
     // do your stuf
         return 1;
     }


     protected void onPostExecute(int result) {
        // do your stuf
     }
 }