在過去的幾天裏,由於我的應用程序中存在數據庫泄漏,我經常收到很多錯誤消息,所以現在我打開數據庫,從中獲取查詢結果並再次關閉數據庫。關閉還是不關閉?
但我也使用cursoradapter爲我autocompletetextview。
我是否也應該這樣做:打開數據庫,獲取光標,關閉數據庫?
我的意思是,我沒有,因爲如果不這樣做的任何問題,但是......
所以我需要你
在過去的幾天裏,由於我的應用程序中存在數據庫泄漏,我經常收到很多錯誤消息,所以現在我打開數據庫,從中獲取查詢結果並再次關閉數據庫。關閉還是不關閉?
但我也使用cursoradapter爲我autocompletetextview。
我是否也應該這樣做:打開數據庫,獲取光標,關閉數據庫?
我的意思是,我沒有,因爲如果不這樣做的任何問題,但是......
所以我需要你
您應該可以在onCreate方法中打開數據庫,並在onDestroy方法中關閉它。這將保證只要活動「活着」並且最終將被清理,它就可以使用。
此外,您應該在與適配器一起使用的光標上使用「startManagingCursor」。這將確保在暫停,恢復和銷燬時分別關閉,重新設置和關閉。一旦完成從適配器獲取數據,適配器中未使用的光標應該關閉。
如果您遵循這些規則,應該不會泄漏。
專家提示,提示你應該總是關閉數據庫連接。
我只是想,如果這有意義重新打開數據庫每次用戶在autocompletetextview中鍵入新的字符。也許還有其他解決方案?! – Tima 2010-10-08 13:35:42
那麼,打開一個數據庫連接是非常昂貴的,所以它取決於應用程序的上下文。最理想的選擇是儘可能晚地打開與數據庫的連接,直到最後一個查詢被調用,然後最終關閉它。 – 2010-10-08 13:43:18
就我而言,這將是用戶準備好輸入內容並點擊建議列表或按鈕中的條目的時間。但cursoradapter應該如何注意這一點。我沒有看到任何方法來摧毀或關閉cursoradapter ...但我現在有一個想法。我實現了自定義的遊標適配器,所以我可以寫一個關閉的方法......謝謝:) – Tima 2010-10-08 14:02:04
不考慮使用finalize()來關閉數據庫連接。無法保證什麼時候會被調用,甚至是否會被調用。有關更多詳細信息,請參閱「Effective Java」第二版第7項。
您可以使用onPause(),onResume()關閉/打開連接嗎?我相信android提供了一些保證,那些被調用。
頂部提示:「tips」不是「tipps」 – skyfoot 2010-10-08 13:22:20
對不起,這個錯誤:) – Tima 2010-10-08 13:33:26