接上次文章講,當(dāng)我想用adb命令模擬發(fā)廣播時(shí)候發(fā)現(xiàn):
這樣是接收不到任何廣播。后面發(fā)現(xiàn)在廣播原理里面有一個(gè)關(guān)鍵類中打出了日志朋腋。
出現(xiàn)這個(gè)問題的原因是Android o版本以后谷歌對(duì)隱式廣播(Implicit Broadcast)的限制更加嚴(yán)格了腻扇,這就導(dǎo)致了在安卓o以前好用,在之后的版本上達(dá)不到預(yù)期的效果了调卑。
我們可以修改為顯式廣播發(fā)送抡砂。從上個(gè)BroadcastQueue類的提示也可以理解出來,修改命令恬涧。
adb命令對(duì)安卓開發(fā)者來說很重要
在上篇文章中提到Process.myPid等
PID全稱:Process Identifer, 進(jìn)程ID注益。一個(gè)APP中可以有多個(gè)進(jìn)程,有個(gè)默認(rèn)進(jìn)程溯捆,稱為主進(jìn)程丑搔。
TID全稱:Thread Identifer 線程ID。一個(gè)進(jìn)程中可以有多個(gè)線程提揍。每個(gè)進(jìn)程有一個(gè)默認(rèn)線程啤月,稱為主線程,通常為UI線程碳锈,其ID與進(jìn)程ID相同顽冶。
UID全稱:User Identifer,即用戶ID售碳。一個(gè)APP只有一個(gè)用戶强重。
從這日志這個(gè)可以看出后面設(shè)置了skip為true,
然后再當(dāng)skip為ture時(shí)候贸人,如果是需要跳過间景,那么將BroadcastRecord為IDLE狀態(tài),然后調(diào)用scheduleBroadcastsLocked艺智,觸發(fā)下一次廣播倘要。后面return就不會(huì)最后最后回調(diào)receiver.onReceiver方法。