在下面的代码中,我试图通过传递URL来检索一些JSON数据。它运行良好,但从互联网上获取数据确实需要一些时间。尽管数据并没有那么庞大,但它仍然需要几秒钟的时间,然后我可以在日志中看到数据。但我真的想提高从互联网上检索数据的速度。
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将行添加到.