Android

線程間通信

  • 主線程和工作線程


    主線程和工作線程
  • 工作線程與工作線程


    工作線程與工作線程
  • 為什么主線程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ī)制

跨進(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

RPC機(jī)制

image.png

Android適配

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

插件化

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容