这个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的解码过程,就不会有问题了。呵呵,这是在捣浆糊啊,做产品不能这样唉~

Android的BUG(一) - HTML 5 播放streaming video造成卡住的问题的更多相关文章

  1. Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)

    Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...

  2. Android开发教程AnimationDrawable逐帧播放动画

    下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助. 当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的 ...

  3. Android应用--简、美音乐播放器增加音量控制

    Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...

  4. Android的BUG(三) - 广为人知的诟病:频繁重启问题

    使用过Android的同学,尤其是用过山寨pad,应该对Android的重启问题印象深刻吧.Android由于其设计的复杂性,可能会使得系统在不经意时陷入异常状态,因此Android设计了一套看门狗机 ...

  5. Android实现GIF图片解码与播放

    Android实现GIF图片解码与播放 如何在Android中播放GIF图片呢?如果直接按以前的方法,分解图片,可能相对比较麻烦. 今天给大伙介绍一种新的方式,构造自己的Android图片解码帮助类, ...

  6. 【Android开发VR实战】二.播放360&#176;全景视频

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...

  7. [技术博客]Android 开发 Bug Log

    [技术博客] Android 开发 Bug Log 大大小小的bug,聪明的愚蠢的都有, 持续记录中...... java.lang.IllegalArgumentException: The sty ...

  8. JavaScript多个h5播放器video,点击一个播放其他暂停

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. android快捷简单的实现音乐播放器

    自己做了一个相对完整的音乐播放器,现在把播放模块提取出来,分享给大家.音乐播放器基本功能都实现了的,可能有些BUG,希望谅解. 播放器功能如下: 1.暂停,播放 2.拖动条实现,快进,快退 3.歌词同 ...

随机推荐

  1. POJ-1006 Biorhythms

    [题目描述] 三个周期时间分别为:23,28和33.分别给定三个周期的某一天(不一定是第一天),和开始计算的日期,输出下一个triple peak. [思路分析] 如果不了解中国剩余定理,可以通过模拟 ...

  2. Java控制台输入ScannerDemo

  3. JNI(2)

    JNI(2) 访问字段和方法 JNI允许本地代码访问java 对象的字段和方法. 调用需要两个步骤: 例如调用cls类的f方法, 1. 获取方法ID jmethodID mid = env->G ...

  4. WinRT Toolkit 介绍--Control篇

    WinRT toolkit是组针对Windows Runtime XAML开发的一系列Control,extension和helper类.它和Windows Phone Toolkit一样,也是由很多 ...

  5. js动画学习(二)

    四.简单动画之缓冲运动 实现速度的缓冲,即不同位置的速度不同,越靠近目标值速度越小,所以速度值与目标值与当前值之差成正比.这里要注意一个问题就是物体在运动中速度是连续变化的,不是按照整数变化的,当物体 ...

  6. SharePoint代码段设计

    参考文章: 1. SharePoint 2013设计管理器代码段 https://msdn.microsoft.com/zh-cn/library/jj822367 2. 如何在SharePoint中 ...

  7. 使用LiveWriter发布Orchard博客

    我们可以Windows Live Writer来发布Orchard博客 在Dashboard–> Modules菜单找到 Remote Blog Publishing 模块.点击 Enable ...

  8. json与字符串互转

    1 字符串转JSON var obj=eval('('+str+")') var obj=JSON.parse(str) var obj=str.parseJSON() 2 JSON转字符串 ...

  9. C++之对象存储空间_对象模型

    C++编译器如何完成面向对象理论向计算机程序的转化 #include<stdio.h>//////c++对象模型和结构体一样         class Test            { ...

  10. C++类的封装_工程

    一个C++工程 main.cpp #include<stdio.h> #include"Array.h" int main(){     Array a1(10); f ...