21

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バイトに制限されているようです。

4

1 に答える 1

17

これを回避する最善の方法は、写真をSDカードに保存し、URIをDBに保存することだと思われます。

私はこれを避けたかったのですが、それほど悪くはなく、はるかに安定しています。

于 2012-08-08T15:20:28.043 に答える