如何提高在 AsyncTask 中从 Internet 检索数据的速度?
How can I improve the speed of retrieving data from internet in an AsyncTask?
在我的以下代码中,我试图通过传递 URL 来检索一些 JSON 数据。它工作正常,但从 Internet 获取数据确实需要一些时间。尽管数据不是那么庞大,但仍然需要几秒钟,然后我可以在日志中看到数据。但我真的很想提高从 Internet 检索数据的速度。
public class DownloadData extends AsyncTask<String, Void, String> {
private static final String TAG = "DownloadData";
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
String result = "";
int data;
data = inputStreamReader.read();
while (data != -1) {
char currentChar = (char) data;
result += currentChar;
data = inputStreamReader.read();
}
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "Failed";
}
@Override
protected void onPostExecute(String s) {
Log.d(TAG, "downloaded JSON Data: " + s);
}
}
不要一个字一个字地看。太花时间了。请改用 .readLine()。
不要使用字符串连接,因为这也需要很多时间。而是使用 StringBuilder 将行添加到。
在我的以下代码中,我试图通过传递 URL 来检索一些 JSON 数据。它工作正常,但从 Internet 获取数据确实需要一些时间。尽管数据不是那么庞大,但仍然需要几秒钟,然后我可以在日志中看到数据。但我真的很想提高从 Internet 检索数据的速度。
public class DownloadData extends AsyncTask<String, Void, String> {
private static final String TAG = "DownloadData";
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
String result = "";
int data;
data = inputStreamReader.read();
while (data != -1) {
char currentChar = (char) data;
result += currentChar;
data = inputStreamReader.read();
}
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "Failed";
}
@Override
protected void onPostExecute(String s) {
Log.d(TAG, "downloaded JSON Data: " + s);
}
}
不要一个字一个字地看。太花时间了。请改用 .readLine()。
不要使用字符串连接,因为这也需要很多时间。而是使用 StringBuilder 将行添加到。