繁体   English   中英

Android Java AsyncTask等待onPostExecute返回方法

[英]Android java AsyncTask wait onPostExecute return method

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

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

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

我考虑过使用等待循环:

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
    }
}

暂无
暂无

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

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