Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android的BUG(一) - HTML 5 播放streaming video造成卡住的問題

Android的BUG(一) - HTML 5 播放streaming video造成卡住的問題

編輯:關於Android編程

這個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,向上回個消息就好了(問題很嚴重,但知道原因後,解決方法都很簡單,呵呵,想起那德國工程師劃線的故事了沒?)

[java] 
case kWhatFlush: 

    sp<AMessage> notify = mCodec->mNotify->dup(); 
                notify->setInt32("what", ACodec::kWhatFlushCompleted); 
                notify->post(); www.2cto.com
                break; 

這個BUG,那天某知名公司的展台上,也看到了,不過他們給的回復是因為我把UA設成IPAD模式造成的,改成android後,會走flash的解碼過程,就不會有問題了。呵呵,這是在搗漿糊啊,做產品不能這樣唉~

 

作者:freshui
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved