Android: la finestra del cursore è piena

W / CursorWindow (15677): La finestra è piena: allocazione richiesta 2195889 byte, spazio libero 2096720 byte, dimensione finestra 2097152 byte

So che è disponibile la memoria app:

D / dalvikvm (15677): GC_FOR_ALLOC ha liberato 9K, 30% libero 17050K / 24291K, sospeso 45ms

Quindi ha a che fare con la finestra delle dimensioni del cursore, quando legge il blob nel byte[] .

Sto usando il metodo integrato per leggere i blob da un cursore.

  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; 

C’è un modo per aggirare questo? La dimensione della finestra sembra essere limitata a 2097152 byte.

Sembra che il modo migliore per aggirare questo è quello di memorizzare la foto sulla SDCard e salvare l’URI nel DB.

Mentre volevo evitare questo, non è male, ed è molto più stabile.