繁体   English   中英

来自AsyncTask的Sendind http json请求

[英]Sendind http json request from AsyncTask

这是一个了解我的问题的小例子:

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与Sleep()结合使用来等待答案之前,但是从我的角度来看,这不是最好的解决方案

听起来您正在尝试执行此操作-

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之类的框架来做到这一点。

我已经用OkHTTP库实现了它。 感谢“ Selvin”的正确指导)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM