Android Compatibility Library CursorLoader : java.lang.IllegalStateException: Cursor is closed -


i'm using cursorloader inside fragment android compatibility library. every time, on droid 2 (i'm unable reproduce on nexus 1 or sensation), seems cursors being closed soon, causing various errors. unfortunately traces don't point anywhere helpful in code (since issue why cursor being closed, not when android notices), i'm struggling figure out going wrong. has else encountered problem? (or have ideas might happening).

some stack traces:

java.lang.illegalstateexception: cursor closed                                         @ android.database.sqlite.sqlitecursor.fillwindow(sqlitecursor.java:278)              @ android.database.sqlite.sqlitecursor.onmove(sqlitecursor.java:255)                  @ android.database.abstractcursor.movetoposition(abstractcursor.java:187)             @ android.database.cursorwrapper.movetoposition(cursorwrapper.java:187)               @ android.support.v4.widget.cursoradapter.getitemid(cursoradapter.java:226)           @ android.widget.abslistview$performclick.run(abslistview.java:1721)                  @ android.os.handler.handlecallback(handler.java:587)                                 @ android.os.handler.dispatchmessage(handler.java:92)                                 @ android.os.looper.loop(looper.java:143)                                             @ android.app.activitythread.main(activitythread.java:4717)                           @ java.lang.reflect.method.invokenative(native method)                                @ java.lang.reflect.method.invoke(method.java:521)                                    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868)     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:626)                        @ dalvik.system.nativestart.main(native method)             java.lang.illegalstateexception: cursor closed                                                               @ android.database.sqlite.sqlitecursor.fillwindow(sqlitecursor.java:278)                                    @ android.database.sqlite.sqlitecursor.onmove(sqlitecursor.java:255)                                        @ android.database.abstractcursor.movetoposition(abstractcursor.java:187)                                   @ android.database.cursorwrapper.movetoposition(cursorwrapper.java:187)                                     @ android.support.v4.widget.cursoradapter.getitemid(cursoradapter.java:226)                                 @ android.widget.adapterview.getitemidatposition(adapterview.java:745)                                      @ android.widget.adapterview.setselectedpositionint(adapterview.java:1081)                                  @ android.widget.abslistview.ontouchevent(abslistview.java:2207)                                            @ android.widget.listview.ontouchevent(listview.java:3377)                                                  @ android.view.view.dispatchtouchevent(view.java:3766)                                                      @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:897)                                             @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:936)                                             @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:936)                                             @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:936)                                             @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:936)                                             @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:936)                                             @ com.android.internal.policy.impl.phonewindow$decorview.superdispatchtouchevent(phonewindow.java:1800)     @ com.android.internal.policy.impl.phonewindow.superdispatchtouchevent(phonewindow.java:1140)               @ android.app.activity.dispatchtouchevent(activity.java:2105)                                               @ com.android.internal.policy.impl.phonewindow$decorview.dispatchtouchevent(phonewindow.java:1784)          @ android.view.viewroot.handlemessage(viewroot.java:1794)                                                   @ android.os.handler.dispatchmessage(handler.java:99)                                                       @ android.os.looper.loop(looper.java:143)                                                                   @ android.app.activitythread.main(activitythread.java:4717)                                                 @ java.lang.reflect.method.invokenative(native method)                                                      @ java.lang.reflect.method.invoke(method.java:521)                                                          @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868)                           @ com.android.internal.os.zygoteinit.main(zygoteinit.java:626)                                              @ dalvik.system.nativestart.main(native method)       java.lang.runtimeexception: unable pause activity : java.lang.illegalstateexception: cursor closed     @ android.app.activitythread.performpauseactivity(activitythread.java:3438)                              @ android.app.activitythread.performpauseactivity(activitythread.java:3395)                              @ android.app.activitythread.handlepauseactivity(activitythread.java:3378)                               @ android.app.activitythread.access$2700(activitythread.java:129)                                        @ android.app.activitythread$h.handlemessage(activitythread.java:2124)                                   @ android.os.handler.dispatchmessage(handler.java:99)                                                    @ android.os.looper.loop(looper.java:143)                                                                @ android.app.activitythread.main(activitythread.java:4717)                                              @ java.lang.reflect.method.invokenative(native method)                                                   @ java.lang.reflect.method.invoke(method.java:521)                                                       @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868)                        @ com.android.internal.os.zygoteinit.main(zygoteinit.java:626)                                           @ dalvik.system.nativestart.main(native method)                                                      caused by: java.lang.illegalstateexception: cursor closed                                                 @ android.database.sqlite.sqlitecursor.fillwindow(sqlitecursor.java:278)                                 @ android.database.sqlite.sqlitecursor.onmove(sqlitecursor.java:255)                                     @ android.database.abstractcursor.movetoposition(abstractcursor.java:187)                                @ android.database.cursorwrapper.movetoposition(cursorwrapper.java:187)                                  @ android.support.v4.widget.cursoradapter.getitemid(cursoradapter.java:226)                              @ android.widget.abslistview.onsaveinstancestate(abslistview.java:910)                                   @ android.widget.listview.onsaveinstancestate(listview.java:3687)                                        @ android.view.view.dispatchsaveinstancestate(view.java:6070)                                            @ android.view.viewgroup.dispatchfreezeselfonly(viewgroup.java:1197)                                     @ android.widget.adapterview.dispatchsaveinstancestate(adapterview.java:759)                             @ android.view.viewgroup.dispatchsaveinstancestate(viewgroup.java:1184)                                  @ android.view.view.savehierarchystate(view.java:6053)                                                   @ android.support.v4.app.fragmentmanagerimpl.savefragmentviewstate(fragmentmanager.java:1387)            @ android.support.v4.app.fragmentmanagerimpl.saveallstate(fragmentmanager.java:1439)                     @ android.support.v4.app.fragmentactivity.onsaveinstancestate(fragmentactivity.java:468)                 @ android.app.activity.performsaveinstancestate(activity.java:1040)                                      @ android.app.instrumentation.callactivityonsaveinstancestate(instrumentation.java:1180)                 @ android.app.activitythread.performpauseactivity(activitythread.java:3420)                              ... 12 more                                                                          

and measures, 1 @ least has single line in code:

android.database.staledataexception: access closed cursor                                        @ android.database.abstractwindowedcursor.checkposition(abstractwindowedcursor.java:217)     @ android.database.abstractwindowedcursor.getblob(abstractwindowedcursor.java:27)            @ android.database.cursorwrapper.getblob(cursorwrapper.java:143)                             @ android.database.cursorwrapper.getblob(cursorwrapper.java:143)                             @ com.testapp.testfragment$1.setviewvalue(testfragment.java:84)                              @ android.support.v4.widget.simplecursoradapter.bindview(simplecursoradapter.java:131)       @ android.support.v4.widget.cursoradapter.getview(cursoradapter.java:257)                    @ android.widget.abslistview.obtainview(abslistview.java:1319)                               @ android.widget.listview.makeandaddview(listview.java:1789)                                 @ android.widget.listview.filldown(listview.java:656)                                        @ android.widget.listview.fillspecific(listview.java:1342)                                   @ android.widget.listview.layoutchildren(listview.java:1616)                                 @ android.widget.abslistview.onlayout(abslistview.java:1172)                                 @ android.view.view.layout(view.java:7037)                                                   @ android.widget.framelayout.onlayout(framelayout.java:333)                                  @ android.view.view.layout(view.java:7037)                                                   @ android.widget.framelayout.onlayout(framelayout.java:333)                                  @ android.view.view.layout(view.java:7037)                                                   @ android.widget.linearlayout.setchildframe(linearlayout.java:1249)                          @ android.widget.linearlayout.layoutvertical(linearlayout.java:1125)                         @ android.widget.linearlayout.onlayout(linearlayout.java:1042)                               @ android.view.view.layout(view.java:7037)                                                   @ android.widget.framelayout.onlayout(framelayout.java:333)                                  @ android.view.view.layout(view.java:7037)                                                   @ android.widget.framelayout.onlayout(framelayout.java:333)                                  @ android.view.view.layout(view.java:7037)                                                   @ android.view.viewroot.performtraversals(viewroot.java:1054)                                @ android.view.viewroot.handlemessage(viewroot.java:1736)                                    @ android.os.handler.dispatchmessage(handler.java:99)                                        @ android.os.looper.loop(looper.java:143)                                                    @ android.app.activitythread.main(activitythread.java:4717)                                  @ java.lang.reflect.method.invokenative(native method)                                       @ java.lang.reflect.method.invoke(method.java:521)                                           @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868)            @ com.android.internal.os.zygoteinit.main(zygoteinit.java:626)                               @ dalvik.system.nativestart.main(native method)                                          

update: fixed, see answer below

i have no cue problem is, maybe helps pinning down.

create loggedcursor , setup cursor factory query gives loggedcursor:

class loggedcursor extends sqlitecursor {     @override     public void close() {         log.d(tag, "cursor closed by:", new runtimeexception("stack trace"));         super.close();     } } 

the runtimeexception created log stack trace easily, not throwing it. when cursor closed you'll see trace in logs.

hopefully, helps figuring out when , whom closed.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -