Android:光标窗口已满

标签 android memory sqlite blob

W/CursorWindow(15677): Window is full: requested allocation 2195889 bytes, free space 2096720 bytes, window size 2097152 bytes

我知道有可用的应用程序内存:

D/dalvikvm(15677): GC_FOR_ALLOC freed 9K, 30% free 17050K/24291K, paused 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 字节。

最佳答案

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

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

关于Android:光标窗口已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11863024/

相关文章:

sql - Linux Sqliteman 安装后所有按钮和选项卡都显示为禁用,需要配置帮助吗?

java - 使用 Hibernate 在 Java 中进行 SQLite 加密

android - Xamarin - ‘Android.Content.IntentFilter' 不是属性类

java - 按二维对二维数组进行排序

actionscript-3 - 当 FileReference.load() 将原始文件数据加载到内存中时,是否可以访问原始文件数据?

素食主义者中的R大距离矩阵

android - Gradle:如何构建不同构建类型的不同风格?

java - 这个线程有什么问题?它只运行一次。 (带有 GPS 位置的线程)

iphone - 设置UITableViewCell自定义png背景

iphone - 在 iphone sdk 中以编程方式创建 sqlite 数据库