[英]SQLite When should I close the db and cursor? Should I use asynchronous invocation?
[英]When should I close a cursor and db?
我在自定義視圖中以不同的方法多次使用相同的光標。 我應該在每次使用后關閉光標還是可以保持打開直到視圖被破壞? 對於數據庫來說,一旦創建了保存此視圖的活動並在活動被銷毀時關閉,它是否可以打開? 當我如上所述時,我不斷收到錯誤'close()從未在數據庫上顯式調用...'。
我應該在每次使用后關閉光標還是可以保持打開直到視圖被破壞?
要看。 如果光標結果不會同時改變(例如遠程連接修改DB),那就沒問題。 不要忘記使用CursorLoader
讓Android自動管理光標(例如,如果你的應用程序崩潰,請關閉光標)。
對於數據庫來說,一旦創建了保存此視圖的活動並在活動被銷毀時關閉,它是否可以打開?
是的,您可以在onResume()
打開並關閉onPause()
回調,或者當您知道不再要查詢您的數據庫時。
當我如上所述時,我不斷收到錯誤'close()從未在數據庫上顯式調用...'。
只有當您的應用崩潰時,這才是正常現象。 如果你像我上面所說的那樣做,就不應該發生。
一旦不需要,您可能希望關閉與DB的所有連接。 如果稍后需要它們,保持連接是可以的,即在要銷毀Activity時關閉連接。
您可以嘗試將db和cursor代碼移動到onResume和onPause以避免該錯誤。 但我想,一個更干凈的方法就是在你的Activity中實現LoaderCallbacks 。 你考慮過嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.