2011-04-18 3 views
0

의 문제는 내가 구글지도에 위치를 표시하기 위해 DB에서 검색 ..then 어떤 장소에 대한 정보를 가지고 데이터베이스 .. 내가 응용 프로그램을 디버깅 할 때안드로이드 : 데이터베이스

이 예외가 발생 "을 만들어 SQLiteCursor.finalize() "IllegalStateException이 클래스 ..

이이 로그 캣의 출력에서 ​​:

04-18 14:58:51.815: ERROR/ActivityThread(263): Failed to find provider info for com.google.settings 
04-18 14:58:51.825: ERROR/ActivityThread(263): Failed to find provider info for  com.google.settings 
04-18 14:58:51.975: ERROR/ActivityThread(263): Failed to find provider info for com.google.settings 
04-18 14:58:52.845: DEBUG/dalvikvm(263): GC freed 3178 objects/193168 bytes in 80ms 
04-18 14:58:53.445: ERROR/Database(263): Leak found 
04-18 14:58:53.445: ERROR/Database(263): java.lang.IllegalStateException: /data/data/ksu.project.gotour/databases/GoTour.db SQLiteDatabase created and never closed 
04-18 14:58:53.445: ERROR/Database(263):  at android.database.sqlite.SQLiteDatabase. <init>(SQLiteDatabase.java:1694) 
04-18 14:58:53.445: ERROR/Database(263):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:738) 
04-18 14:58:53.445: ERROR/Database(263):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:760) 
04-18 14:58:53.445: ERROR/Database(263):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:753) 
04-18 14:58:53.445: ERROR/Database(263):  at android.app.ApplicationContext.openOrCreateDatabase(ApplicationContext.java:473) 
04-18 14:58:53.445: ERROR/Database(263):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193) 
04-18 14:58:53.445: ERROR/Database(263):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98) 
04-18 14:58:53.445: ERROR/Database(263):  at ksu.project.gotour.EventData.Visited(EventData.java:236) 
04-18 14:58:53.445: ERROR/Database(263):  at ksu.project.gotour.spotInfo$2.onCheckedChanged(spotInfo.java:73) 
04-18 14:58:53.445: ERROR/Database(263):  at android.widget.CompoundButton.setChecked(CompoundButton.java:122) 
04-18 14:58:53.445: ERROR/Database(263):  at android.widget.CompoundButton.toggle(CompoundButton.java:85) 
04-18 14:58:53.445: ERROR/Database(263):  at android.widget.CompoundButton.performClick(CompoundButton.java:97) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.View.onTouchEvent(View.java:4179) 
04-18 14:58:53.445: ERROR/Database(263):  at android.widget.TextView.onTouchEvent(TextView.java:6540) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.View.dispatchTouchEvent(View.java:3709) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
04-18 14:58:53.445: ERROR/Database(263):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659) 
04-18 14:58:53.445: ERROR/Database(263):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 
04-18 14:58:53.445: ERROR/Database(263):  at android.app.Activity.dispatchTouchEvent(Activity.java:2061) 
04-18 14:58:53.445: ERROR/Database(263):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 
04-18 14:58:53.445: ERROR/Database(263):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 
04-18 14:58:53.445: ERROR/Database(263):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-18 14:58:53.445: ERROR/Database(263):  at android.os.Looper.loop(Looper.java:123) 
04-18 14:58:53.445: ERROR/Database(263):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
04-18 14:58:53.445: ERROR/Database(263):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-18 14:58:53.445: ERROR/Database(263):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-18 14:58:53.445: ERROR/Database(263):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
04-18 14:58:53.445: ERROR/Database(263):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
04-18 14:58:53.445: ERROR/Database(263):  at dalvik.system.NativeStart.main(Native Method) 
04-18 14:58:53.805: DEBUG/dalvikvm(263): GC freed 844 objects/73448 bytes in 135ms 
04-18 14:58:54.176: ERROR/Exception on query(263): java.lang.NumberFormatException: 
04-18 14:58:57.075: DEBUG/dalvikvm(263): threadid=5: still suspended after undo (sc=1 dc=1 s=Y) 
04-18 14:58:57.075: DEBUG/dalvikvm(263): GC freed 5454 objects/334000 bytes in 92ms 
04-18 14:59:00.556: INFO/MapActivity(263): Handling network change notification:CONNECTED 
04-18 14:59:03.896: INFO/dalvikvm(263): Debugger is attached -- suppressing HeapWorker watchdog 

그리고이 로그 캣위한 그림이다. 어쩌면 더 분명 할 것입니다.

http://download.mrkzy.com/e/1811_md_13031326851.png http://download.mrkzy.com/e/1811_md_13031326852.png

덕분에 많은

+0

메시지는 매우 명확합니다. 사용을 중지하기 전에 데이터베이스를 닫지 않을 것입니다. 그것을 고쳐라. – Mat

+0

여기에 로그를 기반으로 클래스에 만든 데이터베이스 개체를 닫지 않았다고 생각합니다. dbObj.close();를 사용합니다. –

+0

ksu.project.gotour.EventData.Visited (EventData.java:236)에서 코드를 올리실 수 있습니까? 데이터베이스 도우미 권한을 사용할 때마다 확인해야합니다. 모든 쿼리 전에 데이터베이스를 열 필요는 없습니다. 활동 라이프 사이클에서 한 번만 수행해야합니다. 또한 onPause 콜백에서 데이터베이스를 닫는 것을 잊지 마십시오. –

답변

0

그들은 더 이상 필요하지 않을 때 커서를 폐쇄하지 않을 경우 예외 "SQLiteCursor.finalize()" in IllegalStateException Class가 나타날 수 있습니다. 따라서 커서에 close()을 실행하는 것을 잊지 마십시오. 중요한 예외는 아니므로 앱에서이 기능을 사용할 수 있지만이 예외가 발생하면 Eclipse가 중단됩니다.

+0

커서와 DB를 각 작업마다 닫습니다. 아니요이 예외로 인해 작동하지 않는 활동이 몇 가지 있습니다. – khawlah

관련 문제