Android java AsyncTask等待PostExecute返回方法



我写了下面的代码,我正在寻找一种方法来进行http调用,处理数据并返回结果。

异步操作的问题是,当我执行html.getTi()时,没有给我任何值,因为操作仍在运行,而且速度更快。

我尝试使用:synchronized (this) {..java,但它似乎不起作用。

我考虑过使用等待循环:

while(html.getFlg ()! = false);

但它占用了太多资源并挂起。

我曾想过使用callbackspromises,但我不知道这是否正确。

一些建议?

Main.java

Html html = new Html().execute("...");
html.getTi();//return element ArrayList<ListItem>

Html.java

public class Html extends Activity {
ArrayList<ListItem> listItemList = new ArrayList<ListItem>();
public Html execute(String str) {
new Http().execute(str);
return this;
}
public ArrayList<ListItem> getTi() {
return listItemList;
}
public class Http extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() { super.onPreExecute(); }
@Override
protected Void doInBackground(String... params) {
...
}
@Override
protected void onPostExecute(Void result) {
...
}
}
}

您可以简单地使用库okHttp

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(YOUR_URL)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
} else {
// do something wih the result
}
}

最新更新