Wednesday 15 May 2013

Android- java.lang.IllegalStateException: -



Android- java.lang.IllegalStateException: -

i have service runs in background can access (read , write) sqlite database. perform syncing process of app. corresponding foreground process (main app) can access (read , write) sqlite database in android application.

when syncing process going on , user seek access database using foreground process error comes. used synchronized lock sqlite db still error comes.

synchronized (obj) { blogdbadapter.open(); todayblogs = blogdbadapter.getblogsbydate(today, today, me, activity); blogdbadapter.close(); }

this error:

10-24 00:41:11.134: e/androidruntime(1627): fatal exception: main process: com.eyepax.horseapp, pid: 1627 java.lang.illegalstateexception: cannot perform operation because connection pool has been closed. @ android.database.sqlite.sqliteconnectionpool.throwifclosedlocked(sqliteconnectionpool.java:962) @ android.database.sqlite.sqliteconnectionpool.waitforconnection(sqliteconnectionpool.java:599) @ android.database.sqlite.sqliteconnectionpool.acquireconnection(sqliteconnectionpool.java:348) @ android.database.sqlite.sqlitesession.acquireconnection(sqlitesession.java:894) @ android.database.sqlite.sqlitesession.executeforcursorwindow(sqlitesession.java:834) @ android.database.sqlite.sqlitequery.fillwindow(sqlitequery.java:62) @ android.database.sqlite.sqlitecursor.fillwindow(sqlitecursor.java:144) @ android.database.sqlite.sqlitecursor.getcount(sqlitecursor.java:133) @ android.database.abstractcursor.movetoposition(abstractcursor.java:197) @ android.database.abstractcursor.movetofirst(abstractcursor.java:237) @ com.eyx.hor.data.dbadapters.blogdbadapter.getblogsbydate(blogdbadapter.java:172) @ com.eyx.hor.data.datamanager.gettodayblogs(datamanager.java:2693) @ com.eyx.hor.ui.activities.bloglistview.setdataadapter(bloglistview.java:239) @ com.eyx.hor.ui.activities.bloglistview.oncreateview(bloglistview.java:92) @ android.support.v4.app.fragment.performcreateview(fragment.java:1504) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:942) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1121) @ android.support.v4.app.backstackrecord.run(backstackrecord.java:682) @ android.support.v4.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1484) @ android.support.v4.app.fragmentmanagerimpl$1.run(fragmentmanager.java:450) @ android.os.handler.handlecallback(handler.java:733) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5017) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) @ dalvik.system.nativestart.main(native method)

this getblogsbydate(),

public arraylist<blog> getblogsbydate(java.util.date fromdateu, java.util.date todateu, boolean me, activity activity) { date fromdate = new java.sql.date(fromdateu.gettime()); date todate = new java.sql.date(todateu.gettime()); this.open(); cursor cursor = null; if (me) { string user = commonutils.getfromsharedpreference("user_id", "0", activity); cursor = database.rawquery("select * " + table_name + " date(" + date + ") between '" + fromdate + "' , '" + todate + "' , " + user + " = " + user, null); } else { cursor = database.rawquery("select * " + table_name + " date(" + date + ") between '" + fromdate + "' , '" + todate + "'", null); } arraylist<blog> list = null; if (cursor != null && cursor.movetofirst()) { list = new arraylist<blog>(); { blog blog = new blog(); blog.setblogid(cursor.getstring(cursor.getcolumnindex(blog_id))); blog.settitle(cursor.getstring(cursor.getcolumnindex(title))); blog.setdescription(cursor.getstring(cursor.getcolumnindex(description))); blog.setimageurl(cursor.getstring(cursor.getcolumnindex(image_url))); blog.setdate(cursor.getstring(cursor.getcolumnindex(date))); blog.setuser(cursor.getstring(cursor.getcolumnindex(user))); blog.setuserimageurl(cursor.getstring(cursor.getcolumnindex(user_image_url))); blog.setgroupid(cursor.getstring(cursor.getcolumnindex(group_id))); list.add(blog); } while (cursor.movetonext()); } if (cursor != null) cursor.close(); homecoming list; }

the error says:

java.lang.illegalstateexception: cannot perform operation because connection pool has been closed.

then, need open connection.

try using:

synchronized (obj) { blogdbadapter.open(); todayblogs = blogdbadapter.getblogsbydate(today, today, me, activity); blogdbadapter.close(); }

java android sqlite synchronization

No comments:

Post a Comment