2

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

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

4

2 回答 2

1

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

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

于 2012-12-24T18:40:51.410 回答
0

在 1. 第一个 asycTask onPostExecute 方法中运行你的 2. asycTask。顺便说一句,你可以自己设置它的顺序。

如下所示,

 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
     }
 }
于 2012-12-24T18:35:44.483 回答