Android 4.2 staledata中的光标行为发生了变化



我有一个应用程序,自2.1以来在所有版本的android上都能正常工作,但在android 4.2上已经停止工作。

该应用程序在应用程序中保存对光标的引用,并在onTerminate调用中关闭光标。Cursor只填充一次来自SQLite数据库的数据,该数据库在应用程序中也保持打开状态,直到onTerminate。

光标中的数据永远不会改变,但它用于用叠加的值数组填充视图寻呼机,以改变数据在视图寻呼机中的位置。

错误如下:

11-19 05:29:20.600:E/AndroidRuntime(993):致命异常:main 11-1905:29:20.600:E/AndroidRuntime(993):android.database.StaleDataException:正在尝试访问关闭的光标窗口。最可能的原因:光标在调用此方法。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.wildlifes.ReroderingCursorWrapper.getString(ReroderingcursorWrapper.java:71)11-19 05:29:20.600:E/AndroidRuntime(993):在com.ololifepty.wildlifes.AnimalPageCursorAdapter.instantiateItem(AnimalPageCursorAdapter.java:128)11-19 05:29:20.600:E/AndroidRuntime(993):在android.support.v4.view.ViewPager.addNewItem(ViewPager.java:321)11-1905:29:20.600:E/AndroidRuntime(993):在android.support.v4.view.ViewPager.populate(ViewPager.java:441)11-1905: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.WildlifeActivity$1.handleMessage(WildlifeActivity.java:156)11-19 05:29:20.600:E/AndroidRuntime(993):在android.os.Handler.dispatchMessage(Handler.java:99)11-1905:29:20.600:E/AndroidRuntime(993):在com.ololifepty.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(ActivityThreads.java:5039)11-1905:29:20.600:E/AndroidRuntime(993):在java.lang.reflect.Method.invokeNative(Native Method)11-1905:29:20.600:E/AndroidRuntime(993):在java.lang.reflect.Method.ioke(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(ZygoteNit.java:560)11-1905:29:20.600:E/AndroidRuntime(993):在dalvik.system.NativeStart.main(本地方法)

看起来光标正在关闭,但我不知道为什么。如果有人能给我指明正确的方向,我会非常感激,因为模拟器的调试速度非常慢。

检查文档中的onTerminate

它从未在实际设备中调用过,只在模拟器中使用。

相关内容

最新更新