【问题标题】:AsyncTask sanity checkAsyncTask 健全性检查
【发布时间】:2015-06-02 21:22:38
【问题描述】:

我一直在阅读各种 Asynctask 教程和示例,但我仍然有点困惑。如果我想发出 3 个网络请求并返回他们的响应 喜欢:

//示例

String[] response = new String[3];

response[0] = webrequest("http://www.google.com"); //simple HTTP GET request
response[1] = webrequest("http://www.bing.com"); //simple HTTP GET request
response[2] = webrequest("http://www.aj.com"); //simple HTTP GET request

//sample results from request
response[0] = "blah";
response[1] = "arg";
response[2] = "meh";

要使用 AsyncTask 执行此操作,我是否需要实现 3 个不同的 AT?我应该使用其他东西吗?

String[] response = new String[3];
webCreate sample = new webCreate();
try{
response[0] = sample.execute("http://www.google.com").get().toString();
response[1] = sample.execute("http://www.google.com").get().toString();
response[2] = sample.execute("http://www.google.com").get().toString();
}
catch (Exception sampleMsg)
{}

public class webCreate extends AsyncTask<String, String, String> {

}



  protected String doInBackground(String... params) {
          //  String url=params[0];
              String webRequestResponse = null; //the
            // web request

                     BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();


            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }

            return reponse;
    }

我知道我可以使用 .get() 访问响应数据,但是我的“异步”会变成“同步”哈哈。我觉得我应该使用 AsyncTask 以外的东西,但我不知道那是什么。请帮忙。

【问题讨论】:

  • 不要使用 AsyncTasks。改为查看 Volley/Retrofit/Loaders/RxJava。
  • AsyncTasks 是在启动 API 中简化线程使用的失败尝试。随着时间的推移,人们观察到它们组合得不好,它们是回调地狱并且还会泄漏上下文。尽可能避免。

标签: android string android-asynctask webrequest


【解决方案1】:

您的方法没问题,从您的 AsyncTask 的 doInBackground 调用一个启动 webrequests 的函数并使用 . get() 等待结果。由于该请求没有在 mainUi 上运行并阻止它,我认为这样做没有问题。

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2015-04-10
    • 1970-01-01
    • 2021-12-24
    • 2016-09-16
    相关资源
    最近更新 更多