2011-07-04 21 views
0

我有幾個使用sqlite數據庫的活動,當然有使用Cursors,但是在使用遊標的每種方法中,我始終關閉它們。 。 。 以及連我自己光標收盤仍然我得到這個消息沒有被停用或關閉的光標

I/dalvikvm(5232): at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:631) 

I/dalvikvm(5232): at dalvik.system.NativeStart.run(Native Method) 

I/dalvikvm(5232): Uncaught exception thrown by finalizer (will be discarded): 

I/dalvikvm(5232): Ljava/lang/IllegalStateException;: Finalizing cursor [email protected] on my_table_name that has not been deactivated or closed 

究竟什麼是我的問題嗎?我怎麼才能找到我的代碼中的錯誤?應該「(SQLiteCursor.java:631)」對我來說意味着什麼?

感謝

回答

1

沒有,但是這一次

 [email protected] 

可以幫助你找出其中之一是沒有正確關閉一個。您可以登錄光標的參考,你會得到一個類似的字符串作爲更高,如:

 Log.d("ActivityX", cursor1); 
+0

我想找出它會是一個緩慢的狗屎我會新的廣告像20日誌:))),但很好,如果這將幫助我找到問題 - 偉大的:),謝謝......但這是唯一的解決方案還是有其他方法? – Lukap

0

你已經關閉數據庫連接,但不關閉光標

當過關閉數據庫連接首先檢查光標一樣的..

Cursor c; 

if (c != null) { 
    c.deactivate(); 
    c.close(); 
} 
+0

我打電話給c.close();每個軟件。 。 。,我正在關閉遊標,而不僅僅是數據庫 – Lukap

0

當線程由於錯誤而終止並且隨着它過早關閉活動時,我得到了此錯誤。這可能就是發生了什麼事。您可能想要檢查錯誤上方的logcat輸出,以查看是否有其他錯誤導致線程結束活動並因此生成額外的錯誤。

0

我也剛剛解決了我的應用程序中的這個錯誤。當我在做取使用遊標我做檢查的呼叫喜歡:

if (mCursor != null && Cursor.getCount() > 0) { 
    //Iterate through cursor list 
    mCursor.close(); 
} 

因爲你仍然需要關閉遊標即使getCount將()== 0的邏輯應該是導致這個錯誤:

if (mCursor != null) { 
    if(mCursor.getCount() > 0) { 
     //Iterate through cursor list 
    } 
    mCursor.close(); 
} 

希望能幫助別人。