来自AsyncTask的Sendind http json请求

时间:2017-03-16 14:53:27

标签: android android-asynctask httprequest android-volley sendasynchronousrequest

以下是了解我的问题的小例子:

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请求的最佳方式是什么?

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

2 个答案:

答案 0 :(得分: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这样的框架来更好地适应这种情况。

答案 1 :(得分:0)

我已经用OkHTTP库实现了它。感谢“塞尔文”的正确方向)