【Android】主线程切换播放视频时,调用http请求,导致页面卡顿问题

这篇具有很好参考价值的文章主要介绍了【Android】主线程切换播放视频时,调用http请求,导致页面卡顿问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

业务场景:当我们在切换视频播放的途中,后台去调用http请求,就导致了主线程被阻塞,页面卡顿的现象,尝试出来的解决方式是开启一个后台线程去加载视频,然后在主线程中更新UI

一、直接上封装方法

    void switchVideo(String videoFile){
        mVideoView2 = findViewById(R.id.video_view);
        // 在主线程中执行异步任务,加载视频
        new LoadVideoTask().execute(videoFile);
	    }
	    
	    //在后台线程中加载视频资源,然后在主线程中更新UI并播放视频。
		private class LoadVideoTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            // 在后台线程中加载视频
            int resId = getResources().getIdentifier(params[0], "raw", getPackageName());
            final String videoPath = "android.resource://" + getPackageName() + "/" + resId;
            return videoPath;
        }
        @Override
        protected void onPostExecute(String videoPath) {
            // 在主线程中更新UI,设置视频路径并播放
            mVideoView.setVideoURI(Uri.parse(videoPath));
            mVideoView.start();
        }
    }

二、代码解释

这段代码是一个私有内部类 LoadVideoTask ,继承自 AsyncTask ,用于在后台线程中加载视频并在主线程中更新UI并播放视频。具体解释如下:文章来源地址https://www.toymoban.com/news/detail-604543.html

  • doInBackground(String… params) :这是 AsyncTask 的一个方法,用于在后台线程中执行耗时操作。在这个方法中,它首先通过 getResources().getIdentifier(params[0], “raw”, getPackageName()) 获取指定名称的视频资源ID,然后构建视频的路径,并将路径返回。
  • onPostExecute(String videoPath) :这是 AsyncTask 的另一个方法,在后台操作执行完毕后,在主线程中执行。在这个方法中,它使用 mVideoView2.setVideoURI(Uri.parse(videoPath)) 将视频路径设置给 mVideoView2 ,然后调用 mVideoView2.start() 开始播放视频。

到了这里,关于【Android】主线程切换播放视频时,调用http请求,导致页面卡顿问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • html5网页播放器视频切换、倍速切换、视频预览的代码实例

     本文将对视频播放相关的功能进行说明,包括初始化播放器、播放器尺寸设置、视频切换、倍速切换、视频预览、自定义视频播放的开始/结束时间、禁止拖拽进度、播放器皮肤、控件按钮以及播放控制等。  图 / html5视频播放器调用效果(倍速切换) Polyv Web播放器同时支持

    2024年02月13日
    浏览(49)
  • html5播放器视频切换和连续播放的实例

    当前播放器实例可以使用changeVid接口切换正在播放的视频。当有多个视频,在上一个视频播放完毕时,自动播放下一个视频时也可采用该处理方式。  

    2024年02月14日
    浏览(28)
  • html 中video实现切换视频自动播放

    vue2实现的网页中播放视频,主要代码如下: 现在遇到的问题的,视频切换后要手动点击才能播放,是否可以实现切换视频后会自动播放不用手动点击 增加 autoplay 属性就可以了。 要实现切换视频后自动播放,您需要在 video 元素上使用 autoplay 属性。该属性会告诉浏览器在视频

    2024年01月22日
    浏览(29)
  • Day 278/300 移动版 播放视频全屏退出 导致页面错乱

    1、移动版 播放视频全屏退出 导致页面错乱; 2、放大缩小后,页面会错乱; 使用了rem适配,但是基准的页面值不准确导致的。 window.innerWidth 不准确 需要换为 document.documentElement.clientWidth

    2024年02月12日
    浏览(20)
  • 异常排查 | 重复Cookie访问导致HTTP请求引发空指针异常

    近几日,遇到一个困惑了我很久的异常,是浏览器页面向Tomcat服务器发起HTTP请求时,服务器发还回来的一处异常 首先来说一下我是在做什么的过程中遇到这个问题 现在我需要实现一个监听器,去监听在线用户人数,也去 实时记录一下当前这个页面中有多少用户在线 ,这一

    2024年02月08日
    浏览(34)
  • Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

    本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒

    2024年02月01日
    浏览(53)
  • 【生产问题记录】一次简单的 Http 请求异常处理 (请求的 url 太长, Nginx 直接返回 400, 导致请求服务异常)

    按照惯例直接说结论。 后台服务 A 有一个 Http 接口, 代码如下: 没错, 一个 Get 请求, 入参是一个 List 。 同时有另一个后台服务 B, 里面有段逻辑会通过 RestTemplate 调用服务 A 的这个接口, 代码如下: 在服务 B 中, 通过 batchGetUserInfo 方法请求服务 A 时, 传入了一个长度为 122 的 List

    2024年01月16日
    浏览(34)
  • 测试C#调用Aplayer播放视频(3:编写简易播放器)

      学习了参考文献1中的示例代码,也找出了前一篇文章中自己测试控件但无法播放视频的问题(没有将解码库文件复制到可执行程序所在的codecs文件夹内),本文基于APlayer组件编写简单的视频播放器,主要实现以下功能: 序号 功能 说明 1 自定义logo 调用SetCustomLogo函数设

    2024年02月05日
    浏览(55)
  • html5视频播放器代码实例(含倍速、清晰度切换、续播)

    本文将对视频播放相关的功能进行说明(基于云平台),包括初始化播放器、播放器尺寸设置、视频切换、倍速切换、视频预览、自定义视频播放的开始/结束时间、禁止拖拽进度、播放器皮肤、控件按钮以及播放控制等。  图 / html5视频播放器调用效果(倍速切换)    图

    2024年02月06日
    浏览(30)
  • java调用http接口(get请求和post请求)

    1.http接口的格式如下: 图片选择失败,我只能把数据贴出来,如果有不懂的可以问我哈。 http://localhost:8881/department/getDepartmentList接口数据如下:(请求方式是GET) http://localhost:8881/department/getDataById?id=3接口数据如下:(请求方式是POST) 2.需要引入的包有: 3.实现方法如下:

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包