線程間通信
-
主線程和工作線程
主線程和工作線程 -
工作線程與工作線程
工作線程與工作線程 - 為什么主線程Looper.loop()一直死循環(huán),為什么沒有卡死?
主要死循環(huán)中Looper.loop()中
Message msg = queue.next(); // might block
一直在等待,不占用CPU。

image.png
具體看nativePollOnce函數(shù)分析
自定義View
onMeasure()--->onLayout()--->onDraw()
注:除了自繪控件需要搞清楚三個(gè)方法(onMeasure, onLayout, onDraw)外其他兩個(gè)自定義相對(duì)比較簡(jiǎn)單。
- invalidate()與postInvalidate(),requestLayout()三者區(qū)別?
| | invalidate() | postInvalidate() | requestLayout() |
| ----- | ----- | ----- | ----- |
| | 在ui線程執(zhí)行 | 在工作線程執(zhí)行 | |
| | onDraw() | onDraw() | onMeause(),onLayout(),onDraw()| - onMeasure()有幾種Mode?
有三種模式:
UNSPECIFIED
這說明parent沒有對(duì)child強(qiáng)加任何限制,child可以是它想要的任何尺寸。
EXACTLY
Parent為child決定了一個(gè)絕對(duì)尺寸,child將會(huì)被賦予這些邊界限制,不管child自己想要多大。
AT_MOST
Child可以是自己任意的大小,但是有個(gè)絕對(duì)尺寸的上限。
事件分發(fā)機(jī)制
- Android事件分發(fā)機(jī)制完全解析,帶你從源碼的角度徹底理解(上)
- Android事件分發(fā)機(jī)制完全解析,帶你從源碼的角度徹底理解(下)
-
圖解 Android 事件分發(fā)機(jī)制
注:三個(gè)重要方法:- dispatchTouchEvent事件分發(fā)
- onInterceptTouchEvent 事件攔截
- onTouchEvent() 事件處理
跨進(jìn)程通信IPC
RPC指的是跨進(jìn)程遠(yuǎn)程調(diào)用,強(qiáng)調(diào)了調(diào)用的功能,即一個(gè)進(jìn)程之間調(diào)用另外一個(gè)進(jìn)程的方法。
IPC指的是進(jìn)程間通信,android使用Binder機(jī)制來進(jìn)行進(jìn)程間的通信,沒有調(diào)用的功能。
通信方式:
- Binder機(jī)制
- socket
- 管道
- 消息隊(duì)列
- 共享內(nèi)存
- 信號(hào)量
傳遞數(shù)據(jù)類型:
- intent
- 基本類型
- 文件共享
- Content Provider

image.png
Android適配
- Android開發(fā):最全面、最易懂的Android屏幕適配解決方案
-
Android切圖
- 1套標(biāo)注dp圖
- 三套切圖(hdpi,xhpi,xxhdpi)
Android動(dòng)畫
- Frame Animation(幀動(dòng)畫):按順序播放事先做好的圖像
- Tween Animation(補(bǔ)間動(dòng)畫):只能對(duì)View進(jìn)行平移,縮放,漸變,旋轉(zhuǎn)
- Property Animation(屬性動(dòng)畫):API11開始引入,基于Object進(jìn)行屬性改變而
達(dá)到動(dòng)畫效果 - 使用動(dòng)畫場(chǎng)景
- 轉(zhuǎn)場(chǎng)動(dòng)畫
- 加載動(dòng)畫
- 其他動(dòng)畫
Bitmap四種屬性
ALPHA_8:每個(gè)像素占用1byte內(nèi)存
ARGB_4444:每個(gè)像素占用2byte內(nèi)存
ARGB_8888:每個(gè)像素占用4byte內(nèi)存 (默認(rèn))
RGB_565:每個(gè)像素占用2byte內(nèi)存(沒有alpha屬性)
Android繪制圓形圖片的方法總結(jié)
- 使用Xfermode 相交模式:一般選擇這種方式
- 通過裁剪畫布區(qū)域?qū)崿F(xiàn):邊角有鋸齒
- 使用BitmapShader:不適合畫太復(fù)雜圓,比較耗內(nèi)存
定義Java注解處理器
Android ListView 與 RecyclerView 對(duì)比淺析
- 使用:ListView默認(rèn)只支持垂直滾動(dòng),定義了比較多通用方法。RecyclerView支持水平和垂直滾動(dòng),定義比較多抽象接口具體實(shí)現(xiàn)由自己實(shí)現(xiàn),擴(kuò)展性強(qiáng)。
- 緩存:ListView二級(jí)緩存,一是離開屏幕View加入緩沖池,進(jìn)入屏幕view復(fù)用緩沖池view,二是緩存多種類型view,更換adaper就清空。RecyclerView比ListView多兩級(jí)緩存四級(jí)緩存,另外兩個(gè)緩存為默認(rèn)緩存離開屏幕的2個(gè)view和多個(gè)RecyclerView共用一個(gè)緩存池(上限5個(gè)))。
- 緩存本質(zhì)區(qū)別:ListView緩存View,RecyclerView緩存View+ViewHolder+flag
生還是死?Android 進(jìn)程優(yōu)先級(jí)詳解
- 前臺(tái)進(jìn)程
- 可見進(jìn)程
- 服務(wù)進(jìn)程
- 后臺(tái)進(jìn)程
- 空進(jìn)程
MVC,MVP,MVVM與架構(gòu)經(jīng)驗(yàn)談

image.png
插件化
-
動(dòng)態(tài)加載使用的類加載器
- PathClassLoader:只能加載已經(jīng)安裝的apk,即/data/app目錄下的apk
- DexClassLoader:能加載手機(jī)中未安裝的apk、jar、dex,只要能在找到對(duì)應(yīng)的路徑。
- 插件化開源庫
- 簡(jiǎn)單理解Android Dalvik、ART及APK編譯過程

