• Android的BUG(一)


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

  • 相关阅读:
    CloudFoundry 中的GoRouter性能測试
    Android-SharedPreferences
    Oracle 闪回表实验
    使用Jfree实现吧条形图,java代码
    ZOJ Monthly, October 2010 ABEFI
    熟知CDN
    看,2015阿里巴巴视觉设计人员面临的问题招收学校
    于win7使用虚拟磁盘隐藏文件
    2015广东工业大学ACM学校巡回赛 I 游戏高手 (如压力dp)
    spring mvc 错误摘要--。位。
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4925073.html
Copyright © 2020-2023  润新知