android 2.2 videoView 诡异bug

最近遇到一个问题,在2.2系统上,公司项目中使用VideoView,第一次播放正常,第二次播放黑屏。

由于公司项目使用lua + android 原生,所以试了下原生的android 的VideoView ,是没有问题的。

而公司的代码在大部分4.0以上设备上是正常的。

经几天的测试研究,发现在VideoView 第二次 play黑屏之后,调用一次view树的invalidate即可。坑死人的bug。

注意不能直接在VideoView 的start之后马上调用invalidate,应该是由于播放的时候会稍微卡住一段时间

我的方案是在调用start之后,执行下面的代码

new Thread(){
                @Override
                public void run() {
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    MainActivity.mContext.runOnUiThread(new Runnable() {
                        
                        @Override
                        public void run() {
                            System.out.println("xirtam invalidate");
                            MainActivity.mRootView.invalidate();
                        }
                    });
                }
            }.start();

暂时没有发现更好的解决方案。

有遇到过的可以分享一下经验。

posted @ 2013-10-29 17:23  带狗狗带  Views(308)  Comments(0Edit  收藏  举报