我正在使用eclipse ADT进行Android开发。让我解释一下我的问题。我可以从我的服务器api收到响应,问题是,数据非常庞大,无法在我的logcat中显示整个响应。我使用AsynTask来获得响应。 DoinBackground方法
getBookingResults = ServerConnection.getbookings(
BookingsActivity.this, Utils.URL + "users/"
+ "123145/" + "subscribed");
这是我在单独的课程中的Get()
public static String getData(Context ctx, String uri) {
BufferedReader reader = null;
StringBuilder sb = null;
try {
Log.d("Serverconnection URL ", uri);
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(200000);
// save status code
Utils.statusCode = con.getResponseCode();
// String responseBody = EntityUtils.toString(response.getEntity());
sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(
con.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
Log.d("server connection getData", "" + sb.toString());
return sb.toString();
} catch (SocketTimeoutException e) {
Log.d("server connection getData Error ", "" + e);
} catch (IOException e) {
e.printStackTrace();
return " ";
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
return " ";
}
}
}
return sb.toString();
}
当我检查我的logcat中的响应字符串时,显示字符串长度为11743. logcat未显示整个响应
帮助我处理大量数据回复
提前致谢
答案 0 :(得分:0)
事情是你不能盲目地从服务器分配所有数据,否则OOM的风险非常高。你应该使用类似于android建议列表的技术,只在内存中保留用户可见的元素。换句话说,首先你必须弄清楚尺寸是什么或期望尺寸可能是巨大的。然后按块加载数据块到某个UI元素并实现某种“滚动加载”。如果您在滚动时无法从网络加载,可能是由于连接的性质,那么您应该按块加载块并将数据保存到本地存储。然后如上所述以块的形式显示它。我就是这样做的。对不起,不完全是您要找的答案。