【发布时间】:2012-11-20 05:34:15
【问题描述】:
我有一个应用程序可以在自 2.1 以来的所有版本的 android 上正常运行,但在 android 4.2 上已停止运行。
应用程序持有对应用程序中游标的引用,并在 onTerminate 调用中关闭游标。游标只填充一次来自 SQLite 数据库的数据,该数据库在应用程序中也保持打开状态,直到 onTerminate。
游标中的数据永远不会改变,但它用于填充视图分页器,其中包含一组叠加的值,以更改视图分页器中数据的位置。
错误如下:
11-19 05:29:20.600:E/AndroidRuntime(993):致命异常:主 11-19 05:29:20.600:E/AndroidRuntime(993): android.database.StaleDataException:尝试访问已关闭的 CursorWindow.最可能的原因:光标在之前被停用 调用这个方法。 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 com.ololifepty.wildlife.ReorderingCursorWrapper.getString(ReorderingCursorWrapper.java:71) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 com.ololifepty.wildlife.AnimalPageCursorAdapter.instantiateItem(AnimalPageCursorAdapter.java:128) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321) 11-19 05:29:20.600:E/AndroidRuntime(993):在 android.support.v4.view.ViewPager.populate(ViewPager.java:441) 11-19 05:29:20.600:E/AndroidRuntime(993):在 android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:271) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.support.v4.view.ViewPager.dataSetChanged(ViewPager.java:369) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.support.v4.view.ViewPager$DataSetObserver.onDataSetChanged(ViewPager.java:983) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.support.v4.view.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:119) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 com.ololifepty.wildlife.WildlifeActivity$1.handleMessage(WildlifeActivity.java:156) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.os.Handler.dispatchMessage(Handler.java:99) 11-19 05:29:20.600:E/AndroidRuntime(993):在 com.ololifepty.wildlife.WildlifeActivity$1.dispatchMessage(WildlifeActivity.java:87) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 android.os.Looper.loop(Looper.java:137) 11-19 05:29:20.600: E/AndroidRuntime(993):在 android.app.ActivityThread.main(ActivityThread.java:5039) 11-19 05:29:20.600:E/AndroidRuntime(993):在 java.lang.reflect.Method.invokeNative(Native Method) 11-19 05:29:20.600:E/AndroidRuntime(993):在 java.lang.reflect.Method.invoke(Method.java:511) 11-19 05:29:20.600: E/AndroidRuntime(993):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 11-19 05:29:20.600: E/AndroidRuntime(993): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 11-19 05:29:20.600:E/AndroidRuntime(993):在 dalvik.system.NativeStart.main(Native Method)
光标似乎正在关闭,但我不知道为什么。如果有人能指出我正确的方向,我会非常感激,因为模拟器的调试速度非常慢。
【问题讨论】: