有必要去研究Handler和Binder麼?這些問題你會麼

經常會有人問:有必要去研究Handler和Binder麼?

感覺工作中好像用不到呀。

以前開始學習Android的時候,有時候想研究源碼,研究一些Android底層原理,只能去翻書,或者向其他公司的大牛請教,一個疑問有時候會卡好幾天。

那時候只要瞭解四大組件、視圖、網絡請求,你就能拿到一份薪資豐厚的offer;當時,如果你要是精通Java基礎,知道如何處理OOM,組件生命週期原理,熟悉Android源碼、架構體系,進阿里騰訊都是很輕鬆。

現在,你只會這些再出去試試?

現在面試對Android開發者的要求越來越高了!尤其是阿里、頭條、騰訊等大廠,面試問的很多都是原理。

Android Framework的三大核心功能:

1、ActivityManagerService.Java:AMS 管理Android所有應用程序的四大組件;

2、PackageManagerService.Java:PMS 處理包管理相關的工作,常見的比如安裝、卸載應用等;

3、WindowManagerService.Java:WMS 爲所有應用程序分配窗口,並管理這些窗口。

衆所周知,程序代碼是死的,系統運轉是活的,各模塊代碼運行在不同的進程(線程)中,想要真正理解安卓的這幾大服務,勢必要掌握安卓的通信機制,而安卓最主要的兩個通信機制就是Handler和Binder。來來來,看看這幾道大廠關於Handler和Binder的面試真題,能不能答上來?

1、一個線程有幾個Handler?

2、Handler 內存泄漏原因?爲什麼其他的內部類沒有說過有這個問題?

3、爲何主線程可以new Handler?如果想要在子線程中new Handler要做些什麼準備?

4、子線程中維護的Looper,消息隊列無消息的時候的處理方案是什麼?有什麼用?

5、既然可以存在多個Handler往MessageQueue中添加數據(發消息時各個Handler可能處於不同線程),那它內部是如何確保線程安全的?

6、我們使用Message時應該如何創建它?

7、Looper死循環爲什麼不會導致應用卡死?

8、Binder有什麼優勢?(字節跳動)

9、Binder是如何做到一次拷貝的?(騰訊)

10、MMAP的原理講解;(騰訊)

11、爲什麼Intent不能傳遞大數據?(阿里)

12、描述AIDL生成的Java類細節;(字節跳動)

13、四大組件底層的通信機制;(字節跳動)

14、爲什麼Intent不能傳遞大數據?(阿里)

一線企業的app都是多線程和多進程的,而Android進程間通信機制就是Binder,原生的線程間通信則是Handler,Binder和Handler是瞭解安卓運行機制必須要掌握的一個知識點,更是一線企業面試必問的知識點!

看了這些問題,你克你都打上來麼?還會覺得沒有必要去研究Handler和Binder麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章