以下是了解我的问题的小例子:
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()等待回答之前,但从我的观点来看,这不是最好的解决方案
答案 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库实现了它。感谢“塞尔文”的正确方向)