原创 熱修復知識預備

本篇學習基於《Android進階解密》第13章熱修復原理。接下來的會把熱修復、Hook、插件化的知識學習完。這章來學習熱修復的三種基本方案。 1.熱修復的出現 日常開發中,我們可能遇到下面的情況: 線上版本出現了嚴重的bug,如

原创 淺學設計模式之命令模式(22/23)

1. 命令模式的概念 命令模式(Command),將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤銷的操作。 命令模式是行爲型設計模式之一。我們接觸比較多的命令模式個例無

原创 寫給Rikka自己的Handler源碼說明書

1.Handler概述 Handler是Android的一套消息傳遞機制。 爲什麼要使用Handler呢?只有一點原因:在界面可視之後,子線程不能更新UI,所以子線程需要一種手段來通知UI線程數據已更新,這個手段就是Handler

原创 Android應用程序啓動(根Activity)過程

感謝: 《Android進階解密 - 第四章》 今天開始學習四大組件的啓動工作。從Activity開始。之前有寫過,但是那是基於Andorid7.0的源碼,7.0和8.0的最大的區別就是7.0沒有使用AIDL,其通信類用 Acti

原创 淺學設計模式之解釋器模式(23/23)

1. 解釋器模式的概念 解釋器模式(interpreter),給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。 解釋器模式需要解決的是,如果一種特定類型的問題發生的頻率足夠高,那

原创 淺學設計模式之橋接模式(21/23)

在學習橋接模式之前,需要學習設計模式中的另外一個原則 — 合成/聚合複用原則 1. 合成/聚合複用原則 合成/聚合複用原則(CARP),儘量使用合成/聚合,儘量不要使用類繼承。 合成和聚合都是關聯的特殊種類。 聚合 是一種弱

原创 關於提高編程思維與工作效率的總結(持續更新)

這篇blog將一直持續的更新着。(2020.4.18) 關於編寫程序 接到新需求不要立馬開始寫,思考時間要多於總開發時間的30%,即個人的方案評審期 就算定了一個很少的期限,沒幾天就deadline,還是不要馬上去動程序。 (1

原创 淺學設計模式之代理模式(20/23)

代理模式是我們在看源碼中經常會看到的設計模式,像 Retrofit、ActivityManagerService等都使用到了代理模式。 那什麼時候需要使用到代理模式呢? 1. 代理模式的概念 代理模式(Proxy), 爲其他對象

原创 一年工作總結和分享一篇Android面經

昨晚接受富途Offer的郵件,結束了我爲期半個月都不到換工作之旅。 1. 總結 去年大四春招來到東莞的一個做智能硬件的創業公司,剛進來就遇到App改版,所以幾乎是從零開發一個App。 剛進來的時候其實我的項目經驗還不是很豐富,等級

原创 淺學設計模式之中介者模式(18/23)

1. 中介者模式的概念 中介者模式(Mediator), 用一箇中介對象來封裝一系列的對象交互。中介者使各個對象不需要顯式的相互引用,從而使其耦合鬆散,而且可以獨立地改變他們之間的交互。 上面這句話其實就是將兩個會發生作用的對

原创 淺學設計模式之享元模式(19/23)

假如現在有很多的客戶來找你做網站,有的客戶要實現博客功能,有的空戶要實現像電商那樣的圖片視頻展示功能,有的實現像新聞那樣展示圖片+文字的效果,你應該怎麼做? 如果我們實現一套代碼,然後爲每個客戶端都使用複製+粘貼實現功能,然後每個

原创 淺學設計模式之組合模式(17/23)

1. 組合模式的概念 組合模式(Composite), 將對象組合成屬性結構以表示‘部分-整體’的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。 組合模式也被成爲 部分-整體模式,屬於結構型的設計模式。 組合

原创 淺學設計模式之迭代器模式(16/23)

1. 迭代器模式的概念 迭代器模式(Iterator),提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的表示。 又稱爲“遊標模式”,是一種行爲模式,當你想要訪問一個聚集對象,而不管這些對象是什麼都需要遍歷的時候,

原创 淺學設計模式之職責鏈模式(14/23)

1. 職責鏈模式的概念 職責鏈模式(Chain of Responsibility):使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這個對象連成一條鏈,並沿着這個條鏈傳遞該請求,直到有一個對象處理它爲

原创 Android高性能日誌寫入方案-mmap

本文轉自 2019-08-18-Android高性能日誌寫入方案-mmap,用於學習Android 日誌寫入優化。 1. 常規方案的缺陷 性能問題:一開始日誌的寫入就是通過標準I/O直接寫文件,當有一條日誌要寫入的時候,首先,打