Android中的数据库分页

时间:2013-07-09 05:56:20

标签: android json pagination

我想从JSON URL获取数据。它包含22个字段,它有6000行以上。我想解析这个JSON数据并将其存储在SQLite数据库中。

我知道JSON的基础知识,但是当我使用它时,我会得到一个"内存不足"错误。 经过大量的R& D和谷歌搜索后,我发现我必须使用GSON进行重URL,但我并不熟悉它。

我可以在JSON中实现分页吗?换句话说,我可以做一些事情,比如从JSON获取部分数据并将其存储到数据库中,然后请求某些数据并将其存储到数据库中,继续该过程直到解析完整的JSON文件?

2 个答案:

答案 0 :(得分:0)

您必须在服务器端(为您提供JSON数据的那个)实现分页机制,并将范围参数作为您提到的URL的一部分传递。

答案 1 :(得分:0)

如果我知道我会有很多行/数据,那么我会运行一些简单的SQL调用来确定数据的大小。然后在Android中分解原始JSON以处理较小块中的数据,在每个段之后提交。所以在你的例子中,你知道你有6000多行 - 在Android中作为int存储在内存中,然后一次调用1000行。

进一步查询后的一些代码:

    String locationCountPath = "http://mywebserver/countAllMD5UserLocations";
    try {
        //My method to return a count of locations
        int locCount = MyJSONUtilities.countAllUsersLocations(
                locationCountPath, MyJSONUtilities.writeUserDetailsJSON(
                        username.toUpperCase(), password));
        // Compare new count with count on phone
        if (countLocs != locCount && locCount > 0) {
            try {
                // Grab the new set of locations
                askToSyncLocations();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

那么,如果你用自己的方式在一个循环中处理6000+行的方式替换askToSyncLocations()方法,一次批量处理1000个,它应该不会遇到任何内存问题?