我有一些關於Cursor
的問題。android沒有關閉遊標的缺點
我想知道是不是關閉Cursor
的缺點是什麼?
它重新分配資源,但釋放什麼資源?
如果我們不關閉Cursor
?會有什麼後果和在多大程度上?
未關閉Cursor
稍微不影響Activity
,但它在log cat中給出錯誤。
我有一些關於Cursor
的問題。android沒有關閉遊標的缺點
我想知道是不是關閉Cursor
的缺點是什麼?
它重新分配資源,但釋放什麼資源?
如果我們不關閉Cursor
?會有什麼後果和在多大程度上?
未關閉Cursor
稍微不影響Activity
,但它在log cat中給出錯誤。
如果不關閉遊標,那麼你將有訪問您的數據的問題在你的數據庫,因爲在數據庫是開放的,它不應該訪問的東西發生這樣的活動被暫停或以其他方式。具體來說,如果您讓活動管理它,則可以緩解此問題。
光標只是一個接口。這在很大程度上取決於執行情況,有什麼具體的類,它實現您所使用的接口...
在SQLiteCursor的情況下,有相當多的事情讓清理後(這是從升級Froyo):
@Override
public void close() {
super.close();
deactivateCommon();
mQuery.close();
mDriver.cursorClosed();
}
不關閉你的光標,數據仍然應該是一致的,但你會泄漏內存...
我不認爲你會看到從忘記關閉一個遊標的許多問題。這個問題(這幾乎適用於任何內存泄漏)是,如果你一遍又一遍地做,最終會發生一些不好的事情。
例如,我寫了一個應用程序從設備的的SQLite數據庫是數據上傳到服務器。如果我每次完成從數據庫讀取和寫入的操作都沒有關閉遊標,最終會遇到內存不足錯誤和其他各種問題。
我havnt關閉了我的代碼中的遊標,它正在正確顯示數據,我正在訪問數據和應用程序運行正常, 它只是在logcat中發生錯誤完成遊標尚未停用或關閉 – Haris 2012-08-09 21:32:20
是您的控制遊標含義的活動是否使用了manageCursor(X)? – JoxTraex 2012-08-09 22:22:13
不,它工作時沒有管理遊標 – Haris 2012-08-10 07:11:33