2011-04-18 66 views
0

我创建了有关于一些地方..then我从数据库中检索到显示谷歌地图上的位置信息数据的基础上..安卓:问题在数据库

当我调试应用程序时出现此异常“ SQLiteCursor.finalize()”中IllegalStateException异常类..

,这是一个logcat的输出:

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 

而这是用于logcat的图片。也许它更清楚。

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

非常感谢

+0

消息非常明确:在停止使用数据库之前,您并未关闭数据库。解决该问题。 – Mat 2011-04-18 13:30:04

+0

基于日志在这里我想你没有关闭你在你的类中创建的数据库对象。你有使用dbObj.close(); – 2011-04-18 13:31:09

+0

请问你可以从ksu.project.gotour.EventData.Visited(EventData.java:236)发布你的代码吗?无论何时使用数据库帮助程序,您都应该进行检查:您无需在每次查询之前打开数据库。您只需在Activity生命周期中执行一次。另外,不要忘记在onPause回调中关闭数据库。 – 2011-04-24 11:03:17

回答

0

异常"SQLiteCursor.finalize()" in IllegalStateException Class可以,如果你不再需要的时候都不会关闭游标出现。所以,不要忘记为光标执行close()。 这不是关键的异常,所以应用程序可以忍受这一点,但在此异常调试eclipse中断时。

+0

我正在关闭游标和数据库中的每个活动.. 不存在一些活动不工作,因为这种异常:( – khawlah 2011-04-18 21:10:13