android - SqLite Database error inside asynctask -
i run db stuff inside asynctask runs inside runnable via handler.postdelayed(r, 30000). gets repeated (as can see, every 30 seconds).
sometimes, not everytime, app crashing. below logcat.
09-24 18:28:52.813: w/dalvikvm(6194): threadid=12: thread exiting uncaught exception (group=0x40daf1f8) 09-24 18:28:52.823: e/androidruntime(6194): fatal exception: asynctask #2 09-24 18:28:52.823: e/androidruntime(6194): java.lang.runtimeexception: error occured while executing doinbackground() 09-24 18:28:52.823: e/androidruntime(6194): @ android.os.asynctask$3.done(asynctask.java:278) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.futuretask$sync.innersetexception(futuretask.java:273) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.futuretask.setexception(futuretask.java:124) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:307) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.futuretask.run(futuretask.java:137) 09-24 18:28:52.823: e/androidruntime(6194): @ android.os.asynctask$serialexecutor$1.run(asynctask.java:208) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1076) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:569) 09-24 18:28:52.823: e/androidruntime(6194): @ java.lang.thread.run(thread.java:856) 09-24 18:28:52.823: e/androidruntime(6194): caused by: java.lang.illegalstateexception: database /data/data/com.myapp/databases/mydb.db (conn# 0) closed 09-24 18:28:52.823: e/androidruntime(6194): @ android.database.sqlite.sqlitedatabase.verifydbisopen(sqlitedatabase.java:2100) 09-24 18:28:52.823: e/androidruntime(6194): @ android.database.sqlite.sqlitedatabase.lock(sqlitedatabase.java:418) 09-24 18:28:52.823: e/androidruntime(6194): @ android.database.sqlite.sqlitedatabase.lock(sqlitedatabase.java:405) 09-24 18:28:52.823: e/androidruntime(6194): @ android.database.sqlite.sqlitequery.fillwindow(sqlitequery.java:79) 09-24 18:28:52.823: e/androidruntime(6194): @ android.database.sqlite.sqlitecursor.fillwindow(sqlitecursor.java:164) 09-24 18:28:52.823: e/androidruntime(6194): @ android.database.sqlite.sqlitecursor.getcount(sqlitecursor.java:156) 09-24 18:28:52.823: e/androidruntime(6194): @ com.myapp.dballhelper.dbmethod1(dballhelper.java:273) 09-24 18:28:52.823: e/androidruntime(6194): @ com.myapp.dballhelper.dbmethod2(dballhelper.java:582) 09-24 18:28:52.823: e/androidruntime(6194): @ com.myapp.mainactivity$checktointernetonly.doinbackground(mainactivity.java:278) 09-24 18:28:52.823: e/androidruntime(6194): @ com.myapp.mainactivity$checktointernetonly.doinbackground(mainactivity.java:1) 09-24 18:28:52.823: e/androidruntime(6194): @ android.os.asynctask$2.call(asynctask.java:264) 09-24 18:28:52.823: e/androidruntime(6194): @ java.util.concurrent.futuretask$sync.innerrun(futuretask.java:305)
you somewhere along logcat illegalstateexception
because database closed. make sure background tasks canceled before close database, done latest in ondestroy
of activity.
Comments
Post a Comment