2012-07-09 65 views
13

有沒有人知道如何在Android上使用SQLiteDatabase.CursorFactory?我期待獲得一個持久的SQLiteCursor對象,它使用SQL SELECT語句,其中幾個WHERE子句表達式使用的參數可以在重新編程之前以編程方式更改。如何使用SQLiteDatabase.CursorFactory

例如:

SELECT LocationID FROM Locations WHERE Latitude < northlimit AND Latitude > southlimit AND Longitude < eastlimit AND Longitude > westlimit; 

極限參數會動態變化,每隔200毫秒

我試圖解決一個問題,由此,如果我只是用SQLiteDatabase.rawQuery("SELECT ...");,系統會爲每個新查詢的新CursorWindow最終耗盡內存。所以我試圖找到一種方法來強制系統不創建新的CursorWindows。

+0

在重新查詢之前,您應該關閉舊的光標。這樣你就不應該耗盡內存。據我所知,SQLite不支持對其查詢結果集進行隨機行訪問。您只能從頭到尾迭代SQLite結果。 Android框架通過將整個結果加載到遊標中來解決該問題,以允許隨機訪問。如果你的查詢返回很多行(或者很多數據),你也可能遇到內存不足的情況。 – tiguchi 2013-04-12 13:25:09

回答

0
myCursor.close(); 
myDataBaseHelp.close(); 

並記住,提取數據後關閉它!

1

您可以檢查此教程.. 其概括起來完美:

http://www.youtube.com/watch?v=j-IV87qQ00M

,你應該關閉數據庫,任何使用後.. 另一種方法是創建一個類變量光標CR和每次使用它時檢查: 如果(CR == NULL) CR =新.... 別的//做些什麼//

cr.close();