如何在没有outofmemory的情况下从Web服务检索大数据到Android?

时间:2011-12-30 04:55:51

标签: android xml json web-services

我需要从在线数据库到Android应用程序获取大量数据(比如7000条记录)。在网上搜索时,我发现在从字符串转换时,大量数据会导致json中的outofmemory问题。解决方案是在gson或jackson的帮助下转换json。我有两个问题如下

  1. 转换json以避免内存不足问题的另一种解决方案。

  2. 我应该以xml格式获取数据吗?如果是的话,我是否可以解决内存不足问题?

  3. 修改

        String  result = convertStreamToString(is);
    
      JSONObject jObject = new JSONObject(result); // Only i am getting outofMemory Exception..
    
    
       private static String convertStreamToString(InputStream inputStream)
            throws IOException {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        InputStream in = new BufferedInputStream(inputStream);
        byte[] buffer = new byte[1024];
        int n = 0;
        try {
            while (-1 != (n = in.read(buffer))) {
                out.write(buffer, 0, n);
            }
        } finally {
            out.close();
            in.close();
        }
        return out.toString("UTF-8");
    }
    

2 个答案:

答案 0 :(得分:1)

我认为xml格式将允许您获取大量数据。我正在开发一个项目,我用xml下载大约15000个数据,没有内存问题。

答案 1 :(得分:0)

您应该使用Jackson,因为它是一个流处理器,您可以直接以InputStream方式输入ObjectMapper.readValue()方法。只要记录本身不太重,那么你应该能够将它们留在记忆中。也就是说,您可能不应该将它们保存在内存中,您应该将它们提供给数据库并从那里查询它们。