博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android的BUG(一) - HTML 5 播放streaming video造成卡住的问题
阅读量:7084 次
发布时间:2019-06-28

本文共 793 字,大约阅读时间需要 2 分钟。

这个bug,是google自带的问题。 和见到的诸多android的疑难问题一样,这又是一个可以归类为 多线程同步/状态机 问题。

问题处在NuPlayer的异步消息的handle中,现象和原因不细说了,被此BUG纠结的头大的,应该一看就明白。
 
重现步骤:反复进入、退出html5的流媒体播放 (浏览器的UA设成Ipad模式,去如youku网、百度视频中去播视频),会出现卡死情况
 
卡住的原因,就是刚播放开始的初始化过程中,按了返回键,要返回,NUPlayerDriver 会执行reset操作,并且向NUPlayer 发送reset 消息,收到此消息NUPlayer就向Acodec 发送kwhatflush 消息。由于component当时处于LoadedToIdleState状态,  还没有运行起来,实质上不需要flush decoder,但是ACodec 必须要向NUPlayer回馈kwhatflushcomplete消息,以上整个流程能够顺利走完,否则上层模块在等待flush的回应,会一直等待下 去。
 

解决方法:在ACodec中的baseState中,也加入一个case,向上回个消息就好了(问题很严重,但知道原因后,解决方法都很简单,呵呵,想起那德国工程师划线的故事了没?)

  1. case kWhatFlush:  
  2. {  
  3.     sp<AMessage> notify = mCodec->mNotify->dup();  
  4.                 notify->setInt32("what", ACodec::kWhatFlushCompleted);  
  5.                 notify->post();  
  6.                 break;  
  7. }  

这个BUG,那天某知名公司的展台上,也看到了,不过他们给的回复是因为我把UA设成IPAD模式造成的,改成android后,会走flash的解码过程,就不会有问题了。呵呵,这是在捣浆糊啊,做产品不能这样唉~

转载地址:http://dxgml.baihongyu.com/

你可能感兴趣的文章
__attribute__
查看>>
[转] 理解 LSTM 网络
查看>>
读取bin文件,并且按结构体赋值打印
查看>>
Java基础积累
查看>>
【Android每日一讲】2012.11.06 Android变脸 - 主题(Theme)实现
查看>>
redis 系列12 哈希对象
查看>>
asp.net core系列 57 IS4 使用混合流(OIDC+OAuth2.0)添加API访问
查看>>
QTP使用心得
查看>>
uva1388 Graveyard
查看>>
JS 页面跳转
查看>>
JS调用android逻辑方法
查看>>
由3D touch所想到的那些。
查看>>
C# 类&结构体&枚举
查看>>
js/jq ajax+数组。个人整理
查看>>
CentOS7永久挂载硬盘
查看>>
从源码总结struts2命名空间的匹配规则
查看>>
如何看财报-转
查看>>
简介Doxygen(转载)
查看>>
jQuery性能优化指南
查看>>
android 四大组件
查看>>