将inputstream转换为字符串时出现内存不足错误

时间:2015-05-06 22:17:24

标签: java android optimization

当我尝试将InputStream转换为String时,我收到了内存不足的异常。这里我的json响应在4mb附近太大而且它包含一些特殊字符也是这样的:

  

·&安培; NBSP; &安培; NBSP; &安培; NBSP; &安培; NBSP;工作范围:集成RBS6601,DUL,数据测试,创建COP \ r< br /> \ r< br /> \ r< br /> \ r< br />·& nbsp; &安培; NBSP;

这个问题在低端手机的所有Android设备中都无法重现我遇到了这个问题。我怎样才能克服这个问题,任何人都可以帮助我......

我使用以下逻辑转换它:

InputStream is = httpResponse.getEntity().getContent();
String output = null;
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//store  response in buffer
while ((output = br.readLine()) != null) {
    stringBuffer.append(output);
}
stringBuffer.trimToSize();

得到以下错误:

java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:124)
at java.lang.StringBuilder.append(StringBuilder.java:271)
at java.io.BufferedReader.readLine(BufferedReader.java:417)
at com.ldoapps.activitymanager.services.DownloadData.postData(DownloadData.java:359)
at com.ldoapps.activitymanager.services.DownloadData.doInBackground(DownloadData.java:239)
at com.ldoapps.activitymanager.services.DownloadData.onHandleIntent(DownloadData.java:220)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)

0 个答案:

没有答案
相关问题