关于电视机中DTV码流对android的Timer的影响
在電視機系統的開發中,經常會用到模擬的信源(ATV/DTV)。最近在測試的時候發現,在DTV信源下,某個計時用的Timer突然就暫停了,百度一下這個Timer,大部分問的是怎么停止Timer的運行,而沒有提到怎么讓他不停止,囧。
在掙扎了一段時間后,測試發現在DTV信源下才會出現該BUG,而在別的信源下不出現,推斷是跟DTV信源有關。而在做數字電視的一個很大的特點在于,基本上都會拿DTV碼流中的時間寫到系統時間中,以確保系統時間和碼流時間一致。到這里可能很多人都想到了,那就是Timer這個類本身的特點——Timer計時用的是絕對時間,簡單來說就是跟系統時間相關的,一旦系統時間出現修改,那就很有可能影響Timer的計時——DTV碼流中的時間如果和系統本身的時間不一致的話,那么可想而知Timer的計時將會因為碼流的時間寫入系統而出現錯誤。而在測試信源中,碼流的信息往往都是不正確的,與當前系統的時間(一般來說會是網絡獲取的時間)肯定不一致,如果獲取的這個時間是在一天前、一個月前甚至一年前,Timer也就出現了被終止的假象——實際上它一直在運行只是計時混亂了。
解決的方法很簡單,使用基于相對時間的類ScheduledExecutorService就可以了~具體用法可以自己百度一下,該類與系統時間不掛鉤,所以可以隨意使用,據說在高版本SDK中這個類其實已經完全可以取代Timer的地位了,連用法基本都是一致的。
轉載于:https://www.cnblogs.com/blairsProgrammer/p/4220878.html
總結
以上是生活随笔為你收集整理的关于电视机中DTV码流对android的Timer的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子邮件营销七大案例
- 下一篇: 360个人图书馆防复制