【发布时间】:2021-03-10 20:55:54
【问题描述】:
在 Android Studio 中,当我使用 Asynctask 时,执行它并尝试在 onCreate 方法中使用 get(),它会冻结我的整个 UI。
我的 Asynctask 类:
public class HTMLDownload extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
return result;
} catch (Exception e) {
e.printStackTrace();
return "Failed";
}
}
我的onCreate方法代码:
HTMLDownload task = new HTMLDownload();
try {
String result = task.execute("https://www.telltalesonline.com/26925/popular-celebs/").get();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("Result", result);
如何在不冻结 UI 的情况下解决此问题并在下载 HTML 后记录文本?
谢谢
【问题讨论】:
-
不要使用已弃用的 asynctask。使用任何其他线程机制。
标签: java android android-asynctask