久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當(dāng)前位置:首頁>職場>jobhandler里的參數(shù)怎么來的(面試官老生長談)

jobhandler里的參數(shù)怎么來的(面試官老生長談)

發(fā)布時(shí)間:2024-01-24閱讀(16)

導(dǎo)讀前言最近在后臺上看到有很多人私信留言,說在面試或者晉升考核中都遇到了關(guān)于Handler、Binder機(jī)制的難題,相信大家已經(jīng)在為金三銀四這個(gè)旺季做準(zhǔn)備了,現(xiàn)....前言

jobhandler里的參數(shù)怎么來的(面試官老生長談)(1)

最近在后臺上看到有很多人私信留言,說在面試或者晉升考核中都遇到了關(guān)于Handler、Binder 機(jī)制的難題,相信大家已經(jīng)在為金三銀四這個(gè)旺季做準(zhǔn)備了,現(xiàn)在面試官的問題都是根據(jù)你做過的項(xiàng)目進(jìn)行深入探討,如若對技術(shù)原理和底層邏輯沒有深入了解的話,那么你通過面試的機(jī)會(huì)會(huì)顯著下降

近期也是收集并整理了關(guān)于 Android Framework 的邏輯知識點(diǎn)總結(jié)和 Handler、Binder機(jī)制的學(xué)習(xí)筆記,相信能夠解決大家對底層邏輯,技術(shù)原理,源碼解析,面試真題等等相關(guān)技術(shù)知識點(diǎn)的不夠了解透徹的問題

面試真題實(shí)例面試官問:Handler被設(shè)計(jì)出來的原因?有什么用?

● 一種東西被設(shè)計(jì)出來肯定就有它存在的意義,而Handler的意義就是切換線程

● 作為Android消息機(jī)制的主要成員,它管理著所有與界面有關(guān)的消息事件,常見的使用場景有:

● 跨進(jìn)程之后的界面消息處理

● 比如Activity的啟動(dòng),就是AMS在進(jìn)行進(jìn)程間通信的時(shí)候,通過Binder線程 將消息發(fā)送給ApplicationThread的消息處理者Handler,然后再將消息分發(fā)給主線程中去執(zhí)行。

● 網(wǎng)絡(luò)交互后切換到主線程進(jìn)行UI更新

● 當(dāng)子線程網(wǎng)絡(luò)操作之后,需要切換到主線程進(jìn)行UI更新

● 總之一句話,Hanlder的存在就是為了解決在子線程中無法訪問UI的問題

面試官問:Handler線程是如何切換的?

● 假設(shè)現(xiàn)在有一個(gè)線程A,在A線程中通過Looper.prepare和Looper.loop來開啟Looper,并且在A線程中實(shí)例化出來一個(gè)Handler。Looper.prepare()方法被調(diào)用時(shí)會(huì)為會(huì)初始化Looper并為ThreadLocal 設(shè)置Looper,此時(shí)ThreadLocal中就存儲(chǔ)了A線程的Looper。另外MessageQueue也會(huì)在Looper中被初始化

● 接著當(dāng)調(diào)用Loop.loop方法時(shí),loop方法會(huì)通過myLooper得到A線程中的Looper,進(jìn)而拿到Looper中的MessageQueue,接著開啟死循環(huán)等待執(zhí)行MessageQueue中的方法。 (3)此時(shí),再開啟一個(gè)線程B,并在B線程中通過Handler發(fā)送出一個(gè)Message,這個(gè)Message最終會(huì)通過sendMessageAtTime方法調(diào)用到MessageQueue的equeueMessage方法將消息插入到隊(duì)列

● 由于Looper的loop是一個(gè)死循環(huán),當(dāng)MessageQueue中被插入消息的時(shí)候,loop方法就會(huì)取出MessageQueue中的消息,并執(zhí)行callback。而此時(shí),Looper是A線程的Looper,進(jìn)而調(diào)用的Message或者Handler的Callback都是執(zhí)行在A線成中的。以此達(dá)到了線程的切換

面試官問:Handler內(nèi)存泄漏的原因是什么?

● 通常在使用Handler的時(shí)候回通過匿名內(nèi)部類的方式來實(shí)例化Handler,而非靜態(tài)的匿名內(nèi)部類默認(rèn)持有外部類的引用,即匿名內(nèi)部類Handler持有了外部類。而導(dǎo)致內(nèi)存泄漏的根本原因是是因?yàn)镠andler的生命周期與宿主的生命周期不一致

● 比如說在Activity中實(shí)例化了一個(gè)非靜態(tài)的匿名內(nèi)部類Handler,然后通過Handler發(fā)送了一個(gè)延遲消息,但是在消息還未執(zhí)行時(shí)結(jié)束了Activity,此時(shí)由于Handler持有Activity,就會(huì)導(dǎo)致Activity無法被GC回收,也就是出現(xiàn)了內(nèi)存泄漏的問題

面試官問:什么是 Binder?

● 直觀來說,Binder 是 Android 中的一個(gè)類,它繼承了 IBinder 接口

● 從 IPC 角度來說,Binder 是 Android 中的一種跨進(jìn)程通信方式,Binder 還可以理解為一種虛擬的物理設(shè)備,它的設(shè)備驅(qū)動(dòng)是/dev/binder,該通信方式在 linux 中沒有

● 從 Android Framework 角度來說,Binder 是 ServiceManager 連接各種 Manager(ActivityManager、WindowManager,etc)和相應(yīng)ManagerService 的橋梁

● 從 Android 應(yīng)用層來說,Binder 是客戶端和服務(wù)端進(jìn)行通信的媒介,當(dāng)你 bindService 的時(shí)候,服務(wù)端會(huì)返回一個(gè)包含了服務(wù)端業(yè)務(wù)調(diào)用的 Binder 對象,通過這個(gè) Binder 對象,客戶端就可以獲取服務(wù)端提供的服務(wù)或者數(shù)據(jù),這里的服務(wù)包括普通服務(wù)和基于 AIDL 的服務(wù)

面試官問:為什么要使用 Binder?

● 性能:移動(dòng)設(shè)備中如果廣泛的使用跨進(jìn)程通信機(jī)制肯定會(huì)對通信機(jī)制提出嚴(yán)格的要求,而 Binder 相比較傳統(tǒng)的進(jìn)程通信方式更加的高效

● 安全:由于傳統(tǒng)進(jìn)程通信方式?jīng)]有對通信的雙方和身方做出嚴(yán)格的驗(yàn)證,只有上層協(xié)議才會(huì)去架構(gòu),如 socket 連接的 IP 地址可以人為的偽造。而 Binder 身份校驗(yàn)也是 android 權(quán)限模式的基礎(chǔ)

面試官問:Binder 的工作流程是什么樣的?

● 性客戶端首先獲取服務(wù)器端的代理對象,所謂的代理對象實(shí)際上就是在客戶端建立一個(gè)服務(wù)端的“引用”,該代理對象具有服務(wù)端的功能,使其在客戶端訪問服務(wù)端的方法就像訪問本地方法一樣

● 性客戶端通過調(diào)用服務(wù)器代理對象的方式向服務(wù)器端發(fā)送請求

● 性代理對象將用戶請求通過 Binder 驅(qū)動(dòng)發(fā)送到服務(wù)器進(jìn)程

● 性服務(wù)器進(jìn)程處理用戶請求,并通過 Binder 驅(qū)動(dòng)返回處理結(jié)果給客戶端的服務(wù)器代理對象

由于文章篇幅有限,文檔的資料內(nèi)容較多,其他內(nèi)容僅以圖片形式進(jìn)行展示

jobhandler里的參數(shù)怎么來的(面試官老生長談)(2)

jobhandler里的參數(shù)怎么來的(面試官老生長談)(3)

結(jié)語

隨著面試過程中你的回答,面試官就會(huì)聯(lián)想到更多的技術(shù)知識點(diǎn),以此來了解你的技術(shù)面有多廣,適不適合該檔位,或者能不能往更高的職位上發(fā)展,全方位地考察你對技術(shù)的理解深度,以及解決問題的能力

更多關(guān)于Android面試題目的答案我都已經(jīng)整理到了本地PDF文檔中,這里由于篇幅原因沒有一一把答案貼上來,需要完整文檔的朋友們私信我發(fā)送:“Android面試真題”

歡迎分享轉(zhuǎn)載→http://m.avcorse.com/read-212116.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖