关于android原生VideoView解决卡顿现象

  • 自己公司的项目是webview嵌套h5的,,反正麻烦的很0.0
    • 恩 不过这个解决卡顿还不错,直接上代码了,大部分都可以搜到的handler+Runnable,我只是重复了一下,稍微修改了一下而已
/** 1.获取当前的播放时间,与上一次记录的时间进行对比, 2.如果事件一样了,就说明卡顿了!!! 3.时间不一样,那就说明可能没有卡顿 0.0 (缓存了可就说明了) 4.根据 卡顿 和 不卡顿 来做相关的处理 */
    int old_duration = 0 ;//记录上一次的播放时间,不用置零(感觉)
    private final Handler mHandlerLock = new Handler();
    private Runnable mRunLock = new Runnable() {
        public void run() {

            int duration = mVideoView.getCurrentPosition();
            if (old_duration == duration && mVideoView.isPlaying()) {
                //说明有问题播放下一个视频
                playNextItem();
                ToastUtil.show(getApplicationContext() , "卡住了,播放下一个" );
            } else {
                //说明正常不做处理
                ToastUtil.show(getApplicationContext() , "正常播放" );
            }
            old_duration = duration ;

            mHandlerLock.postDelayed(mRunLock, 10 * 1000);//10秒进行一次判断,也可以长或者短
        }
    };
//最后就是调用的地方了,我在这里封装里面了,在VideoView。start()方法下执行
 private void decideVideoLock() {
        mHandlerLock.removeCallbacks(mRunLock);
        mHandlerLock.postDelayed(mRunLock, 0);
    }

你可能感兴趣的:(视频)