0

这是理解我的问题的小例子:

public class InitSettings_Task extends AsyncTask<Void, Void, Integer>  {
  @Override
  protected Integer doInBackground(Void... params) {
    request1result = request1;
    if (request1result) {
      result = httprequest2;
    } else {
      result = httprequest3;
    }  

    return result;
  }

  @Override
  protected void onPostExecute(Integer result) {
    //do something with result
  }
}

我知道 Volley 是一个超级库,但在这里我不能使用它,因为我的 AsyncTask 可以在我收到第一个请求的答案之前结束。

有人可以帮助我了解发送此逻辑的 http 请求的最佳样式吗?

在我使用带有 Sleep() 的 Volley 等待答案之前,但从我看来这不是最好的解决方案

4

2 回答 2

0

我已经通过 OkHTTP 库实现了这一点。感谢“Selvin”的正确方向)

于 2017-03-17T06:54:42.733 回答
0

听起来你正在尝试这样做 -

public class InitSettings_Task1 extends AsyncTask<Void, Void, Integer>  {
  @Override
  protected Integer doInBackground(Void... params) {
    request1result = request1;


    return result;
  }

  @Override
  protected void onPostExecute(Integer result) {
    //do something with result
    if (request1result) {
      result = new InitSettings_Task2().execute(httprequest2);
    } else {
      result = new InitSettings_Task2().execute(httprequest3); 
    }  

  }
}

public class InitSettings_Task2 extends AsyncTask<Void, Void, Integer>  {


   @Override
   protected Integer doInBackground(Void... params) {
      return result;
   }

   @Override
   protected void onPostExecute(Integer result) {
   //do what you want with result ?  
   }
}

但我建议你不要这样做。最好使用更适合这种情况的 RxJava 甚至 EventBus 等框架来执行此操作。

于 2017-03-16T15:16:27.737 回答