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