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();
暂时没有发现更好的解决方案。
有遇到过的可以分享一下经验。