Android:光标窗口已满

时间:2012-08-08 10:55:19

标签: android memory sqlite blob

  

W / CursorWindow(15677):窗口已满:请求的分配2195889   字节,可用空间2096720字节,窗口大小2097152字节

我知道应用内存可用:

  

D / dalvikvm(15677):GC_FOR_ALLOC释放9K,30%免费17050K / 24291K,暂停45ms

因此,当将blob读入byte[]时,它纯粹与光标大小窗口有关。

我使用内置方法从游标中读取blob。

    try
    {
        c = rdb.query("Photos", new String[]{"photo"}, "id = ?", new String[]{""+photoID}, null, null, null);
        if(c.moveToFirst())
        {
            byte[] tArray = c.getBlob(c.getColumnIndex("photo")); // THIS LINE ERRORS
        }               
    }catch(Exception e)
    {
        e.printStackTrace();
    }
    c.close();

    return tArray;

有解决方法吗?窗口大小似乎限制为2097152字节。

1 个答案:

答案 0 :(得分:18)

似乎最好的方法是将照片存储在SD卡上,并将URI保存在数据库中。

虽然我想避免这种情况,但它并不太糟糕,而且更加稳定。