问题描述
- 求大神帮忙啊,看看这是咋回事
-
07-30 11:19:09.510: E/MessageQueue-JNI(10893): Exception in MessageQueue callback: handleReceiveCallback
07-30 11:19:09.517: E/MessageQueue-JNI(10893): java.lang.RuntimeException: Could not read input channel file descriptors from parcel.
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.InputChannel.nativeReadFromParcel(Native Method)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.InputChannel.readFromParcel(InputChannel.java:148)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:690)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl.setView(ViewRootImpl.java:637)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:261)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:71)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.widget.PopupWindow.invokePopup(PopupWindow.java:1030)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.widget.PopupWindow.showAtLocation(PopupWindow.java:856)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.widget.PopupWindow.showAtLocation(PopupWindow.java:820)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at io.vov.vitamio.widget.MediaController.show(MediaController.java:354)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at io.vov.vitamio.widget.MediaController.show(MediaController.java:281)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at io.vov.vitamio.widget.VideoView.toggleMediaControlsVisiblity(VideoView.java:532)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at io.vov.vitamio.widget.VideoView.onTouchEvent(VideoView.java:491)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.View.dispatchTouchEvent(View.java:7793)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2356)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2019)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2356)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2019)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2356)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2019)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2356)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2019)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2356)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2019)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2356)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2019)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2164)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1594)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.app.Activity.dispatchTouchEvent(Activity.java:2514)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2112)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.View.dispatchPointerEvent(View.java:7984)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4433)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4304)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3845)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3895)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3864)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3971)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3872)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4028)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3845)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3895)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3864)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3872)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3845)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6165)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6145)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6099)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6295)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.os.MessageQueue.nativePollOnce(Native Method)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.os.MessageQueue.next(MessageQueue.java:138)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.os.Looper.loop(Looper.java:150)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at android.app.ActivityThread.main(ActivityThread.java:5332)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 11:19:09.517: E/MessageQueue-JNI(10893): at java.lang.ref
07-30 11:19:09.528: E/Surface(10893): dequeueBuffer failed (Invalid argument)
解决方案
解决方案二:
http://www.cnblogs.com/jacobchen/p/3568151.html
解决方案三:
怎么出现的这个问题??我看到了为popupwindow ,是不是你关闭activity的时候没有dimiss()它??
解决方案四:
看log显示,你在播放视频的过程中点击了屏幕:io.vov.vitamio.widget.VideoView.onTouchEvent(VideoView.java:491),
然后VideoView调起了控制台(io.vov.vitamio.widget.VideoView.toggleMediaControlsVisiblity),
控制台的popupWindow显示后接着想要从InputChannel中去读取touch事件: android.view.InputChannel.readFromParcel(InputChannel.java:148)
-----分析:
个人觉得应该是窗口切换过程中事件派发混乱导致的异常,
1. 事件为什么会下发给popupWindow?
---> 可以检查下你VideoView中touch事件相关的回调方法,尽量返回ture让事件消耗完,没有机会再发给popupWindow
2. popupWindow为什么刚显示就是去读取touch事件?
---> 看下是否有方法可以控制下让popup渲染完成之后,再接收事件
时间: 2024-09-20 06:14:16