簡體   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