使用相机预览设置动画时,我会崩溃。
跟踪如下:
D / OpenGLRenderer:0x702565a400(RippleDrawable)上的endAllActiveAnimators,句柄为0x701d23cc60D / AndroidRuntime:关闭VM
致命异常:java.lang.IllegalStateException:指定的消息队列同步障碍标记尚未发布或已被删除。 在android.os.MessageQueue.removeSyncBarrier(MessageQueue.java:512) 在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1248) 在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:6338) 在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:874) 在android.view.Choreographer.doCallbacks(Choreographer.java:686) 在android.view.Choreographer.doFrame(Choreographer.java:621) 在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:860) 在android.os.Handler.handleCallback(Handler.java:751) 在android.os.Handler.dispatchMessage(Handler.java:95) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6121) 在java.lang.reflect.Method.invoke(Method.java) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:889) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
我使用Googles示例实现了相机预览,在预览的顶部有“自动对焦”椭圆形,使用animate()
方法和alpha进行动画显示/隐藏。
答案 0 :(得分:0)
当从相机预览中获得回调时,我并没有强迫线程成为主线。
private Handler mAutoFocusHandler = new Handler(Looper.getMainLooper());
使用此Handler
发布Runnable
动画自动对焦的位置可解决此问题。
注意:请务必检查您是否在UI线程上设置自己的观看动画,因为View.animate()
似乎在从相机后台线程启动时起作用,但偶尔会使应用程序崩溃。