首页 / JSON / java – JSON和内存问题
java – JSON和内存问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JSON和内存问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2308字,纯文字阅读大概需要4分钟。
内容图文
![java – JSON和内存问题](/upload/InfoBanner/zyjiaocheng/965/6d05969aefae44d7883e37b56f996d3a.jpg)
我正在尝试从Web加载大量数据到我的Android应用程序,我一直收到这个错误:
07-18 10:16:00.575: E/AndroidRuntime(30117): java.lang.OutOfMemoryError: [memory exhausted]
并且已经阅读了很多关于JSON的内容.我找到了一些解决方案,但没有什么真正帮助我.
这是我的代码:
public class HistoricoAdapter extends BaseAdapter {
private Context ctx;
JSONArray jsonArray;
public HistoricoAdapter(Context ctx) {
this.ctx = ctx;
String readHttp = readHttp();
try {
// transforma a string retornada pela fun??o readHttp() em array
jsonArray = new JSONArray(readHttp);
} catch (Exception e) {
e.printStackTrace();
}
}
public String readHttp() {
// Acessa a URL que retorna uma string com os dados do banco
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("some url");
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e(this.toString(), "Erro ao ler JSON!");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
public int getCount() {
return jsonArray.length();
}
public boolean isEmpty(){
if(jsonArray.toString().isEmpty()){
return true;
}
else {
return false;
}
}
public Object getItem(int position) {
JSONObject ob = null;
try {
ob = jsonArray.getJSONObject(position);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ob;
}
public long getItemId(int arg0) {
return 0;
}
public View getView(int position, View view, ViewGroup arg2) {
LayoutInflater layout = (LayoutInflater) ctx
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = layout.inflate(R.layout.listar_compromisso, null);
try {
JSONObject obj = (JSONObject) getItem(position);
} catch (Exception ex) {
}
return v;
}
}
任何人都可以预测为什么我会收到此错误?
解决方法:
如果出现此错误,那么您的JSON必须太大而无法缓冲到内存中.
问题是org.json太基本无法处理.
> GSON – Streaming
> Jackson – Processing model: Streaming API
内容总结
以上是互联网集市为您收集整理的java – JSON和内存问题全部内容,希望文章能够帮你解决java – JSON和内存问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。