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バイトに制限されているようです。
これを回避する最善の方法は、写真をSDカードに保存し、URIをDBに保存することだと思われます。
私はこれを避けたかったのですが、それほど悪くはなく、はるかに安定しています。