2012-10-15 39 views
3

我在自定義視圖中以不同的方法多次使用相同的光標。我應該在每次使用後關閉遊標還是保持打開狀態,直到視圖被破壞?對於數據庫也是如此,一旦持有此視圖的活動被創建並在活動被銷燬時關閉,它可以被打開嗎?如上所述,我不斷收到錯誤'close()從未顯式調用數據庫...'。什麼時候應該關閉遊標和db?

回答

2

每次使用後我應該關閉遊標還是可以保持打開狀態直到 視圖被破壞?

取決於。如果遊標結果不會同時發生變化(例如,遠程連接修改數據庫),那麼就可以。不要忘記使用CursorLoader讓Android自動管理您的光標(例如,如果您的應用崩潰,請關閉光標)。

而同樣的數據庫,可以一次被創建 持有這種觀點的活動被打開,當活動被銷燬關閉?

是的,你可以在onResume()和關閉onPause()回調打開,或當你知道你的數據庫是不會再被質疑。

我不斷收到錯誤「close()方法從未被明確要求數據庫 ......」當我做如上文所述。

只有當您的應用程序崩潰時,這纔是正常的。如果你像我上面所說的那樣做,就不應該發生。

1

一旦你不需要它們,你可能想要關閉與數據庫的所有連接。如果您稍後需要連接,則保持連接即可,即當活動被銷燬時關閉連接。

+0

好的。從這個錯誤可能來自哪裏的任何想法? db在onCreate()中打開並在onStop()中關閉,那麼它怎麼還說它沒有關閉? –

1

您可以嘗試將您的數據庫和遊標代碼移至onResume和onPause以避免該錯誤。但我想一個更簡潔的方法就是在您的活動中實施LoaderCallbacks。你有沒有考慮過?

相關問題