手機(jī)狀態(tài)欄信號(hào)顯示流程淺析

版權(quán)聲明:本文為作者原創(chuàng)档玻,轉(zhuǎn)載必須注明出處怀泊。

轉(zhuǎn)載請(qǐng)注明出處:http://www.reibang.com/p/d4e0eccb7639

最近在分析手機(jī)狀態(tài)欄信號(hào)展示的一個(gè)問題,把a(bǔ)ndroid源碼稍微擼了一下误趴,對(duì)整個(gè)流程有了一個(gè)粗略的了解霹琼,寫篇文章記錄一下。代碼參考的是android 7.0源碼。

先來(lái)看看整個(gè)流程的時(shí)序圖:

image.jpeg

Android的網(wǎng)絡(luò)信號(hào)欄的顯示刷新也是SystemUI的一部分枣申,主要業(yè)務(wù)邏輯也是在SystemUI這模塊內(nèi)的售葡,整個(gè)流程的開始是在PhoneStatusBar.java內(nèi)的,

frameworks/base/packages/SystemUI/src/com/Android/systemui/statusbar/phone/PhoneStatusBar.java;

1忠藤、由PhoneStatusBar的makeStatusBarView()方法來(lái)加載布局挟伙。由于在Android系統(tǒng)中由三處地方會(huì)使用信號(hào)欄(狀態(tài)欄、鎖屏界面下的狀態(tài)欄以及下拉通知欄的快捷設(shè)置區(qū)域),這三個(gè)引用處分別是status_bar.xml模孩、keyguard_status_bar.xml像寒、status_bar_expanded_header.xml),實(shí)例化三個(gè)對(duì)象瓜贾,并在這個(gè)方法中為每一個(gè)SignalClusterView.java對(duì)象綁定兩個(gè)控制器對(duì)象诺祸,NetworkControllerImpl、SecurityControllerImpl;

2祭芦、NetworkControllerImpl筷笨,繼承于BroadcastReceive,實(shí)現(xiàn)NetworkController, 對(duì)象主要是負(fù)責(zé)作為信號(hào)欄數(shù)據(jù)控制類龟劲,onReceive中監(jiān)聽各種系統(tǒng)廣播來(lái)監(jiān)控比如 wifi, sim卡狀態(tài), service state ,飛行模式等胃夏。通過CallbackHandler將它自己和SignalClusterView聯(lián)系起來(lái),CallbackHandler和SignalClusterView同時(shí)實(shí)現(xiàn)NetworkController中的接口SignalCallback, 通過在CallbackHandler的對(duì)象中調(diào)用SignalClusterView的方法來(lái)實(shí)現(xiàn)NetworkControllerImpl對(duì)SignalClusterView控制通信;NetworkControllerImpl通過執(zhí)行registerListeners( ) 來(lái)對(duì)所有MobileSignalController做個(gè)遍歷昌跌,執(zhí)行每個(gè)MobileSignalController 的registerListener(),來(lái)設(shè)置phoneStateListener監(jiān)聽仰禀。

3、 MobileSignalController是對(duì)訂閱的廣播做處理的封裝類蚕愤,每個(gè)廣播對(duì)應(yīng)一個(gè)MobileSignalController答恶,進(jìn)行數(shù)據(jù)處理與封裝,主要是實(shí)現(xiàn)PhoneStateListener接口用來(lái)監(jiān)聽service state萍诱、信號(hào)強(qiáng)度悬嗓、通話狀態(tài)、移動(dòng)數(shù)據(jù)連接狀態(tài)裕坊,設(shè)置相應(yīng)的顯示圖標(biāo)包竹。然后將這些狀態(tài)和圖標(biāo)顯示屬性通過CallbackHandler傳遞給SignalClusterView對(duì)象中。

4籍凝、SignalStrength主要定義的是信號(hào)強(qiáng)度和顯示格數(shù)的關(guān)系周瞎, getLevel( )獲取手機(jī)當(dāng)前信號(hào)值,強(qiáng)度分為0-4饵蒂,0是最弱声诸,4是最強(qiáng)。在MobileSignalController通過updateTelephony來(lái)封裝數(shù)據(jù)(當(dāng)然包含SignalStrength的level)苹享,最后通過notifyListenersIfNecessary來(lái)傳遞給SignalClusterView.java負(fù)責(zé)UI的刷新双絮。

5浴麻、SignalClusterView.java通過SignalCallback的回調(diào),調(diào)用apply()方法和內(nèi)部類PhoneState的apply()方法來(lái)完成最終的界面刷新囤攀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載软免,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末焚挠,一起剝皮案震驚了整個(gè)濱河市膏萧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝌衔,老刑警劉巖榛泛,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異噩斟,居然都是意外死亡曹锨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門剃允,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沛简,“玉大人,你說我怎么就攤上這事。” “怎么了恢总?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捧灰。 經(jīng)常有香客問我,道長(zhǎng)统锤,這世上最難降的妖魔是什么毛俏? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮跪另,結(jié)果婚禮上拧抖,老公的妹妹穿的比我還像新娘。我一直安慰自己免绿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布擦盾。 她就那樣靜靜地躺著嘲驾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迹卢。 梳的紋絲不亂的頭發(fā)上辽故,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音腐碱,去河邊找鬼誊垢。 笑死掉弛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喂走。 我是一名探鬼主播殃饿,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芋肠!你這毒婦竟也來(lái)了乎芳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帖池,失蹤者是張志新(化名)和其女友劉穎奈惑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睡汹,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肴甸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囚巴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雷滋。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖文兢,靈堂內(nèi)的尸體忽然破棺而出晤斩,到底是詐尸還是另有隱情,我是刑警寧澤姆坚,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布澳泵,位于F島的核電站,受9級(jí)特大地震影響兼呵,放射性物質(zhì)發(fā)生泄漏兔辅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一击喂、第九天 我趴在偏房一處隱蔽的房頂上張望维苔。 院中可真熱鬧,春花似錦懂昂、人聲如沸介时。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沸柔。三九已至,卻和暖如春铲敛,著一層夾襖步出監(jiān)牢的瞬間褐澎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工伐蒋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留工三,地道東北人迁酸。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像俭正,于是被迫代替她去往敵國(guó)和親奸鬓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,499評(píng)論 25 707
  • 十二年前段审,為了將兩張電影音樂cd中的三十支曲目和電影名稱一一對(duì)應(yīng)起來(lái)全蝶,我和好朋友每個(gè)星期三下午都會(huì)湊在她的筆記...
    dolo釗閱讀 330評(píng)論 0 0
  • 只聽樓梯響抑淫,不見人下來(lái) 只聽樓梯響,不見人下來(lái)姥闪,是漢語(yǔ)成語(yǔ)始苇,出自司馬文森《風(fēng)雨桐江》,比喻只是口頭說說筐喳,沒有實(shí)際行...
    第九棵香樟樹閱讀 846評(píng)論 0 0
  • 1. 題目 請(qǐng)讀取出arr字符串中每個(gè)字母重復(fù)出現(xiàn)的次數(shù)分別是多少催式?如字符串a(chǎn)rr="abcdaabc",a重復(fù)出...
    jdzhangxin閱讀 961評(píng)論 0 4