Android videoview加载视频会导致主线程短时间阻塞。这个怎么解决,求大手子

Android videoview加载视频会导致主线程短时间阻塞。这个怎么解决,求大手子

4个回答

用异步任务AsyncTask来处理播放视频的代码

调用prepareAsync(),这个方法是异步执行的.

一般没有人会直接在主线程里直接加载,都是另外开启线程,或者直接使用异步线程AsyncTask来做的。

我是开的子线程,在里面处理的播放视频逻辑,但是调用到start和setvideopath方法会阻塞到主线程,用异步任务类试试

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Androidx学习笔记(29)--- 开辟子线程 解决主线程阻塞
网络请求 主线程阻塞 UI停止刷新,应用无法响应用户操作耗时操作不应该在主线程进行 ANR application not responding应用无响应异常主线程阻塞时间过长,就会抛出ANR 主线程又称UI线程,因为只有在主线程中,才能刷新UI 主线程不能被阻塞 在Android中,主线程被阻塞会导致应用不能刷新ui界面,不能响应
完美解决VedioView加载视屏黑一下的问题
在app中需要使用vedioview来加载本地的视屏,但是会发现在播放视屏前会黑一下(时间的长短,取决于手机加载资源的速度),这样在给用户使用app的时候,体验效果非常的差。        首先来看一下为什么会出现黑屏的现象。视频本地播放前短暂黑屏,是由于VideoView加载资源需要一定的耗时,视频加载到视频渲染到屏幕这个过程也是需要时间的。如何避免播放前的黑屏现象呢,下面就通过一些方法来尝试
VideoView加载视频时候出现短暂黑屏解决办法
xml布局
关于ANR线程阻塞那些坑
上次就是由于网关在点击一个ListView OnItemClick事件的时候 直接报ANR相信各位老司机也很清楚 就是说Android 当你点击某个组件五秒没有反应直接就ANR异常导致程序崩溃 那么问题来了到底怎么解决这个问题呢?方案1如果是点击事件的问题我们可以先把点击事件的代码去掉再调试方案2开启子线程另外做同步 因为这样就可以解决线程阻塞的问题 不会出现ANR异常
Android不阻塞的UI线程的方法
Android中的UI线程也是应用的主线程。顾名思义,UI线程主要负责界面的刷新与管理,向onKeyDown()这样的系统回调也都在UI线程中(主线程)中被执行。 这个线程是否在流畅的运行直接关系到当前的App的用户体验。例如:如果一个按钮被点击后会执行某个非常耗时间的操作(比如下载),那么用户单击了这个按钮后,界面会发生卡顿现象,直到这个非常耗时间的操作执行完毕界面才会恢复到能与用户交
Android之线程阻塞(一)
Android线程阻塞,模拟出错。
关于主线程阻塞导致界面卡顿问题总结
遇到的问题 一个界面里面执行了刷新和一个动画效果,当动画效果执行完之后会对界面进行重新绘制,这个时候会出现卡顿现象。 解决问题 经多次查看,问题不出在动画上,是动画执行完毕之后更新一个textView里的内容,这个textView宽高是wrapContent的,所以,当更新textView内容的时候会重新绘制textView的宽高,导致了主线程阻塞,出现卡顿。 解决方法:将此textView
Android VideoView播放本地视频短暂黑屏的解决方法
新的大版本终于正式发布了,整整三个月,做的心力交瘁,导致好久都没有更新文章了。最近接触了许多新的知识,也算是忙碌中有所收获。希望接下来的时间工作上能够稍微松缓一些,让我可以利用在家的闲余时间把一些内容整理总结,慢慢消化一下。今天首先来谈一谈前段时间遇到的一个关于ViewView的问题。        VideoView在Android视频播放中很常用,用法也比较简单。但是,我在使
android菜鸟笔记之UI线程阻塞
android菜鸟笔记之UI线程阻塞
开发时遇到的问题videoview初始化播放会出现几秒黑屏问题
videoview初始化黑屏 开发时百度了好多方法解决这个问题,效果不是很好 把下面这句放在onCreate()方法里面就可以实现初始化时去除黑屏 getWindow().setFormat(PixelFormat.TRANSLUCENT);
解决UI主线程阻塞原因
了解进程和线程的区别,在进行耗时操作遇到阻塞时,学会线程阻塞时的处理方法。 当线程阻塞超过5秒时,会遭到系统的提示解决阻塞的问题的方法:(1)创建一个新的进程 官方建议:不要阻塞UI进程; 不要在UI进程之外的其他线程中,对视图当中的组件进行设置。 //经典异常 Only the original thread that created a view hierarchy can
VideoView播放视频前短暂黑屏问题
转自:http://blog.csdn.net/goodlixueyong/article/details/53590573   ---膜拜大神,分析的很透彻明白 VideoView播放本地视频的开始会出现短暂的黑屏。通常这种黑屏在新打开的页面中是勉强可以接受的,不过,如果是针对在应用的启动页播放视频这样的业务场景,这样的黑屏就很难以被接受了。        首先来看一下
使用Asynctask导致线程阻塞
这p http://blog.csdn.net/mddy2001/article/details/17127065
安卓开发SOCKET编程中几种线程阻塞产生的原因与解决办法
在使用socket编程中,有几种情况会使线程产生阻塞。 1、解析DNS阻塞 当需要把一个域名解析为IP地址的时候,可用使用以下语句来获得。使用下面API的时候,如果当前环境没有网络,或者网络异常,将会使得解析失败,getByName方法会抛出异常,但是抛出异常的时间大约在三四分钟以后,时间太长。InetAddress add = InetAddress.getByName(hostname);
android videoview 播放前黑屏的解决方法之一
http://stackoverflow.com/questions/9765629/android-videoview-black-screen 播放前黑屏的原因是videoview加载资源需要一定的耗时, 如何避免播放前的黑屏现象呢, 可以给videoview设置加载的监听, 如果加载前给一个遮罩,等资源加载完成后隐藏遮罩. 如果有更好的解决方法,欢迎留言 采用这样解决方案: 需
解决sleep延时阻塞程序主线程,造成程序未响应问题方案
延时是以ms为单位,在计数时要加以注意1,头文件//Download by http://www.NewXing.com #ifndef _XSLEEP_H_ #define _XSLEEP_H_void XSleep(int nWaitInMSecs);#endif // _XSLEEP_H_ 2,源文件#include <windows.h>// This structure is used i
用AsyncTask处理UI线程阻塞问题
如果有操作阻塞UI线程软件可能出现界面无响应错误,所以耗时操作不要放在UI线程中实现。 常用的解决方式是把这类网络操作,加载大文件等等好似操作通过AsyncTask在后台线程中处理。 如何使用AsyncTask? 通过集成AsyncTask抽象类写一个自己的myAsyncTask类 private class MyTask extends AsyncTask  三
Android线程阻塞处理及优化
一、前期基础知识储备当一个应用程序启动之后,android系统会为这个应用程序创建一个主线程(Main Thread),它负责渲染视图,分发事件到响应监听器并执行,对界面进行轮询的监听。因此,一般也叫做“UI线程”(UI Thread)。android系统不会给应用程序的多个元素组件建立多个线程来执行。一个视图(Activity)中的多个view组件运行在同一个UI线程当中。因此,多个view组件...
VideoView视频大小屏切换/缓冲/卡顿监听和处理
走一张效果图 VideoView缓冲/卡顿检测和处理 import javax.swing.Timer; * 卡顿检测 * 卡顿处理 VideoView缓冲/卡顿检测 VideoView在播放网络视频的时候,由于网速原因,可能会出现卡顿情况,我们有2种方式进行检测。 使用VideoView的OnInfoListener监听 自定义监听 通过VideoView
Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
1.在Android模拟器中是可以播放视频的,可播放视频的格式为3gp、mp4、mkv等,其中我们使用VideoView控件播放一个视频时,部署到模拟器上,往往会弹出一个对话框:
iOS开发-dispatch_sync阻塞主线程造成死锁
NSLog(@"之前 - %@", [NSThread currentThread]); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"sync - %@", [NSThread currentThread]); }); NSLog(@"之后 - %@", [NSThread currentThread]
通过实例验证播放本地音乐MediaPlayer的reset函数并不会阻塞主线程
如题,通过下面的一个例子,频繁点击播放下一首歌,验证MediaPlayer的reset函数是否会发生阻塞。 验证数据如下:在从20:26:04.673到20:26:36.168的32秒时间内,点击170次Next播放下一首歌曲,都成功,没有发生阻塞主线程导致ANR的问题。 由于本例播放的都是本地歌曲 ,所以没有发生阻塞的情况。如果是播放在线歌曲,需要与网络交换,频繁执行播放动作,可能会发生
线程阻塞与Handler相关超详细原理讲解
转载请标明出处: http://blog.csdn.net/vinicolor/article/details/49642861; Handler的重要性我就不多说了,想学习Android的人必须要懂Handler,下面我们从原理性方面全面讲解Handler 首先,我们来解释一下线程和进程是什么:从一定意义上讲,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,这就像大家可
Android学习记录(十) 弹框阻塞处理
需求:需要做一个弹框,弹框完成后再进行其它数据处理。 开始的时候在主线程做了for循环来处理弹框触发和相应的逻辑,结果发现无论是alertdialog还是popupwindow都无法真正做到阻塞主线程处理。 开始的时候有了个奇葩的想法,想写标志位来阻塞主线程。。。弹框结束后来改写标志位,结果你懂的。。。(ui全阻塞。。。) 现在后来发现其实问题的根源就在于主线程for循环,就不应该用for循
解决Android播放页闪屏问题
解决方法: 在Activity中的onCreate方法中添加getWindow().setFormat(PixelFormat.TRANSLUCENT);
关于UI线程的阻塞问题以及处理方式
学习Android,有一条程序设计中比较重要的原则,就是永远不要阻塞UI线程。(以下观点是个人看法,不到之处望大家指出互相学习) 一、什么叫UI线程的阻塞? UI线程的阻塞是指,由于在activity所在的线程中执行耗时操作,导致UI线程无法正常的运作。 二、UI线程的阻塞会导致什么? 会导致程序发生假死状态,导致用户提前关闭程序,丧失用户数量。或者在过了5秒之后Android系统出来干预
android 启动页VideoView 播放本地视频短暂黑屏解决
在许多应用中,都加入了播放视频,有的在登录页,有的在启动页,今天就试试在启动页播放本地视频。 1,重写VideoView      由于 视频的尺寸问题导致VideoView 播放视频的时候不能全屏,这时候需要重写VideoView的onMeasure()的方法,代码如下:   public class FullScreenVideoView extends VideoView {
Android VideoView加载网络视频过程中退出页面,出现程序无响应 希望来大神指点一二
最近在做视频播放,测试的时候出现频繁循环(点击播放列表,进入播放页面,返回列表页),出现程序卡死问题。播放页面加载慢的时候按返回键没反应,再按就会出现无响应问题。也不报错。 代码如下: package com.ccphl.box.activity; import java.lang.reflect.Type; import java.util.ArrayList; import java.u
子线程阻塞的一个解决方案
首先,说下我的需求。我有一个子线程对局域网某个主机进行试探连接,用的是开源项目JCIFS类,该类并没有对连接超时时间的设置,只是在很长时间连不上后会报出connect timeout的warning,这并不是我想要的。因为试想,用户可能会在一段时间连不上后选择退出该Activity,那么此时后台还在连接,当连接上后会在子线程通过handler将数据传回,或者连接不上后通过handler传一个消息,
使用VideoView出现无法播放此视频的解决方案
最近的项目中需要用到VideoView实现视频播放,自己花了一天多时间才能出来,有点想打自己,在学校的时候没好好学。 废话少说,此次遇到的问题是无法播放此视频+黑屏,问题如下图, 这个问题硬是发了我一天多时间,在网上找不到解决方案,老板急,俺也急。 我是这样写的,已经简单的不能再简单了 Uri uri = Uri.parse(&quot;http://pic.ibaotu.com/00/
android应用程序中对于ANR主线程超时不响应导致强制关闭的解决方案
ANR(Application Not Responding)定义 在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框
VideoView导致内存泄漏
今天调试app的时候,LeakCanary提示开机视频页面SplashVideoActivity出现内存泄漏。然后用Android Profiler查看了一下,果然已经执行了finish的SplashVideoActivity还存在于内存中。其中罪魁祸首就是这个AudioManager,它持有了SplashVideoActivity的引用。 然后去网上查了一下VideoView导致内存泄漏的...
关于VideoView无法监听视频播放时缓冲或者卡顿状态的解决办法
首先在android使用系统自带播放器有三种实现方式: 1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。   2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。   3、使用MediaPlayer类和SurfaceView来实现。这种方
android 中handler为什么不会阻塞主线程
handler在消息处理的时候用到了Looper.loop()方法ActivityThread程序的入口public static final void main(String[] args) { SamplingProfilerIntegration.start(); …… Looper.prepareMainLooper(); if
connect永远阻塞线程及解决方案
手机升级到ios9后这两天测试发现应用前后台切换并且网络快速闪断出现2次connect永远阻塞线程的问题。在远程连接服务器前后收到网络异常通知,导致connect永远阻塞,进而线程阻塞。当然在进行连接前要判断是否有网络,若没有连接就别去连接了,当然若你连接时网络正常,在connect连接响应返回前网络异常了,就会出现被永远阻塞吧! 最好的解决方案是干掉这个僵死的线程。用了很多方法杀不死ios的阻塞
VideoView缓冲/卡顿监听和处理
监听视频缓冲和显示实时下载速度,以及视频大小屏切换,其中使用的MyVideoView,继承自VideoView,除了能随意指定大小,别的都一样,换成VideoView也是一样使用的
Android 横竖屏切换后继续播放Video
https://github.com/gradha/Android-video-stream-rotation/blob/master/src/com/elhaso/tutinterruptvideostream/HelloInterruptVideoStream.java
关于android videoview视频不能匹配整个videoview控件的问题
其实就是官方API的videoview.class里面的onmeasure的问题 解决方法如下: 1.新建一个VideoView类,继承android.widget.VideoView 2.新建的这个类重写onmeasure方法 代码如下: public class VideoView extends android.widget.VideoView { private int mVi
videoview实现视频引导页及从assets文件中读取文件到本地SD卡
videoview实现视频引导页及从assets文件中读取文件到本地SD卡
iOS 耗时操作放在子线程,阻止线程阻塞
//这里应该开辟一个子线程去请求苹果服务器          dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{          //        [self goDoSomethingLongAndInvolved];         DSLog(@"
VideoView中实现循环播放视频的问题
本文转载来自:http://blog.sina.com.cn/s/blog_ea95a18b0102wg84.html            关于这一点我很惭愧,研究了两个小时各种方法几乎都用到了,可是半毛钱的作用也没有起。   最后,静下心来想了想突然醒悟了,看源码多么强大的领悟。于是乎顺藤摸瓜我便很快解决了问题,顺利完成了循环播放视频。   实现效果描述:给手机SDcard的某个目录下放
android的ui线程阻塞实验和证明handle.postdelay没有起新线程
代码说明: Handler handler = new Handler(); Runnable update_thread = new Runnable() { @Override public void run() { // TODO Auto-generated method stub //线程每次执行时输出"UpdateThread..."文字,且自动换行
videoview播放视频 全屏和带缓冲进度的加载条
Androidstudio 环境下的源码。 编译不通过请修改 project的build.gradle 的 classpath 'com.android.tools.build:gradle:1.5.0' app的build.gradle的 compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.meiaomei.absplbsandroid" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" }
线程阻塞的原因
线程阻塞的原因 导致线程阻塞的原因主要由以下几方面。 1、线程执行了Thread.sleep(int n)方法,线程放弃CPU,睡眠n毫秒,然后恢复运行。 2、线程要执行一段同步代码,由于无法获得相关的同步锁,只好进入阻塞状态,等到获得了同步锁,才能恢复运行。 3、线程执行了一个对象的wait()方法,进入阻塞状态,只有等到其他线程执行了该对象的notify()或notif
Android的VideoView如何循环播放
package com.hangcheng;import com.example.bdcustomer_demo.R;import com.hangcheng.view.MyVideoView;import android.app.Activity;import android.media.MediaPlayer;import android.os.Bundle;import android.vi
videoview使用的坑
项目里的app里的视频播放是用videoview实现的,最初的播放流程为 // 当MediaPlayer准备好后触发该回调 private MediaPlayer.OnPreparedListener mOnPreparedListener = new MediaPlayer.OnPreparedListener() { @Override public
Android使用videoview播放res/raw下的视频并在结束后隐藏
final VideoView vv = (VideoView)findViewById(R.id.videoView1); vv.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.starttv)); vv.start(); //播放结束侦听 vv.setOnCompletio
Android VideoView本地视频播放
本文将讲解使用VideoView播放本地视频,使用起来相对简单,在其中添加了MediaController类来实现更多的视频控制功能。 实现效果图: 代码; 布局文件: 使用VideoView,VideoView是一个带有视频播放功能的视图,可直接在布局中使用。 <RelativeLayout xmlns:android="http://schemas.android.com/a
VideoView播放本地、网络视频及其监听
重写过的VideoView,可以设置宽高和播放、暂停监听 public class MyVideoView extends VideoView { private int mVideoWidth; private int mVideoHeight; private PlayPauseListener mListener; public MyVideoView(Conte
android Dalvikvm GC 多次运行 引起UI主线程卡顿问题
问题背景: 我这边android客户端需要在每一次启动的时候加载开机广告,具体流程,请求广告服务器拿回来图片的url,然后去下载图片,再然后就是popwindow去展示。 代码如下: package com.iptvclient.android.baseclient.startupad; import android.content.Context; import android.g
相关热词 c# id读写器 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图
立即提问