在2.x系统上正常的系统裁剪图片程序,在4.0上发生诡异异常
在2.x系统下正常的系统裁剪图片程序,在4.0下发生诡异错误!
我使用了系统自带的图片裁剪程序(com.android.camera.action.CROP)进行裁剪,在2.X系统下一切正常,但是程序移到4.0后,竟然在裁剪完图片,保存并将图片数据返回上一个Activity是出错了!根据日志,错误不是发生在我程序里的,而是有一个不属于我程序的数据库游标被关闭了,这个搞得我一头雾水啊。以下是错误信息,请各位帮我看看是怎么回事:
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): FATAL EXCEPTION: main
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): java.lang.RuntimeException: Unable to resume activity {com.android.test/com.android.test.MainActivity}: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1173)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.os.Looper.loop(Looper.java:137)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at java.lang.reflect.Method.invoke(Method.java:511)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at dalvik.system.NativeStart.main(Native Method)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): Caused by: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:75)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.database.BulkCursorToCursorAdaptor.requery(BulkCursorToCursorAdaptor.java:144)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.database.CursorWrapper.requery(CursorWrapper.java:186)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.Activity.performRestart(Activity.java:4505)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.Activity.performResume(Activity.java:4531)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): ... 10 more
------解决方案--------------------
这问题我今天刚遇到,不过在同事的指引下,解决了,4.0系统设置里有个开发者选项,将其关闭即可。
我使用了系统自带的图片裁剪程序(com.android.camera.action.CROP)进行裁剪,在2.X系统下一切正常,但是程序移到4.0后,竟然在裁剪完图片,保存并将图片数据返回上一个Activity是出错了!根据日志,错误不是发生在我程序里的,而是有一个不属于我程序的数据库游标被关闭了,这个搞得我一头雾水啊。以下是错误信息,请各位帮我看看是怎么回事:
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): FATAL EXCEPTION: main
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): java.lang.RuntimeException: Unable to resume activity {com.android.test/com.android.test.MainActivity}: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1173)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.os.Looper.loop(Looper.java:137)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at java.lang.reflect.Method.invoke(Method.java:511)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at dalvik.system.NativeStart.main(Native Method)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): Caused by: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:75)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.database.BulkCursorToCursorAdaptor.requery(BulkCursorToCursorAdaptor.java:144)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.database.CursorWrapper.requery(CursorWrapper.java:186)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.Activity.performRestart(Activity.java:4505)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.Activity.performResume(Activity.java:4531)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)
02-27 08:36:40.086: ERROR/AndroidRuntime(2496): ... 10 more
------解决方案--------------------
这问题我今天刚遇到,不过在同事的指引下,解决了,4.0系统设置里有个开发者选项,将其关闭即可。