我正在调用Web服务在地图上绘制点。我在回复中找到了750条记录。当页面第二次加载时,它会显示此错误。
致命异常:线程-26 java.lang.OutOfMemoryError 在java.lang.String。(String.java:513) at org.apache.http.util.CharArrayBuffer.toString(CharArrayBuffer.java:261) at org.apache.http.util.EntityUtils.toString(EntityUtils.java:141) at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146) at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:76) at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59) 在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657) 在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627) 在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616) 在com.roundmenu.Nearme.run(Nearme.java:583) 在java.lang.Thread.run(Thread.java:1019)
@Override
public void run() {
try {
HttpGet post = null;
Log.e("", "Share.isfromfilter = " + Share.isfromfilter);
if (Share.isfromfilter) {
Log.e("", "Teset 1");
Log.e("", "Share.CuisineValue = " + Share.CuisineValue);
if (Share.CuisineValue.equalsIgnoreCase("")) {
Log.e("", "Teset 2");
post = new HttpGet("my url here");
} else {
Log.e("", "Teset 3");
post = new HttpGet("my url here");
}
} else {
Log.e("", "Teset 4");
post = new HttpGet("my url here");
}
post.addHeader("apikey", "880639B3638597349AC1BE6F70FC5682");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
response = client.execute(post, responseHandler);
System.out.println("----------------------------------------");
System.out.println(response);
handler.sendEmptyMessage(0);
} catch (Exception e) {
e.printStackTrace();
handler.sendEmptyMessage(1);
}
}
在执行此代码期间,我也获得了VM Out of Budget Error。
答案 0 :(得分:0)
Android Dalvik VM有堆限制。你能告诉Web服务返回多少字节? 如果数据量很大,建议逐步读取数据,而不是将所有数据传输到一个大的字符串缓冲区。
HttpResponse response = httpclient.execute(post);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(instream));
String data = null;
while ((data = reader.readLine()) != null) {
...
}
}
}