今天在運行測試應用的時候出現以下exception:
04-05 17:09:21.988: E/Database(3101):android.database.sqlite.DatabaseObjectNotClosedException: Application did notclose the cursor or database object that was opened here
貌似說我沒有關掉數據或者數據庫遊標,可是查了半天代碼也找不到哪裏錯了,因爲所有用到的db或者cursor 都寫close()函數,不曉得爲什麼還會出現這樣的問題。
後來我又仔細察看了log,發現在該exception之前又出現了NullPointerException, 而且發出該NullPointerException的地方是在cursor.close()之前,也就是說前一個exception導致程序退出,退出時發現cursor沒關,於是又報了一個DatabaseObjectNotClosedException.
現在解決辦法是在使用cursor的地方加了一個,try{}catch{}finally{}, 把cursor.close()放在finally裏面最保險了。