java ListView内存问题
我正在使用listview
将超过50项存储到listview
中,但在插入第20项之后,日志猫中显示的错误如下所示
08-02 12:50:34.646: E/CursorWindow(5245): not growing since there are already 16 row(s), max size 1048576
08-02 12:50:34.646: E/Cursor(5245): Failed allocating 69485 bytes for text/blob at 24,8
08-02 12:50:34.695: D/Cursor(5245): finish_program_and_get_row_count row 25
08-02 12:50:35.365: E/CursorWindow(5245): need to grow: mSize = 1048576, size = 69485, freeSpace() = 9795, numRows = 16
08-02 12:50:35.365: E/CursorWindow(5245): not growing since there are already 16 row(s), max size 1048576
08-02 12:50:35.365: E/Cursor(5245): Failed allocating 69485 bytes for text/blob at 23,8
08-02 12:50:35.396: D/Cursor(5245): finish_program_and_get_row_count row 26
08-02 12:50:35.896: D/Cursor(5245): skip_rows row 7
08-02 12:50:35.905: E/CursorWindow(5245): need to grow: mSize = 1048576, size = 69485,
freeSpace() = 9795, numRows = 16
08-02 12:50:35.905: E/CursorWindow(5245): not growing since there are already 16 row(s), max size 1048576
08-02 12:50:35.905: E/Cursor(5245): Failed allocating 69485 bytes for text/blob at 22,8
08-02 12:50:35.936: D/Cursor(5245): finish_program_and_get_row_count row 27
08-02 12:50:36.425: D/Cursor(5245): skip_rows row 6
08-02 12:50:36.436: E/CursorWindow(5245): need to grow: mSize = 1048576, size = 69485,
freeSpace() = 9795, numRows = 16
而且应用程序的加载速度非常慢。帮帮我
# 1 楼答案
答案是,我们不能在单个
Cursor
中从sqlite
db加载超过1MB的数据。因此,必须避免将大型数据加载到列表项中。另一种解决方案是保留大数据的任何唯一ID,并通过onClick List
项将其称为单个数据(对我有用)最好的解决方案是使用
CursorJoiner
并遵循以下链接how to load more than 1 MB data from sqlite db to android cursor?
Android SQL Lite fail to grow