原创 Binder原理之Apk安裝原理

apk的安裝過程同樣離不開Binder機制和PMS。當我們選中安裝Apk,一般分爲兩種安裝方式: 有界面安裝 無界面安裝 一、有界面安裝方式 比如有些版本的手機會彈出是否確定安裝的界面,點擊確定以後纔會繼續安裝。對於這種安裝方

原创 Binder原理之PMS工作原理和代碼模擬

我們如何獲取手機中安裝應用的包信息呢,沒錯在activity中通過this.getPackage().getPackageInfo()即可拿到包信息。那麼this.getPackage()返回的是什麼呢?從當前程序時如何拿到其他程

原创 架構師學習--組件化開發之APT使用及JavaPoet

一、概念及作用 什麼是APT?全稱是Annotation Processing Tool,翻譯過來就是註解處理工具,它的作用就是可以在代碼編譯期間對註解進行處理,並且生成Java文件,減少手動的代碼輸入,因此它能夠使我們編寫的代碼

原创 架構師學習--butterknife原理解析

之前有介紹過IOC實現佈局、控件、事件的運行時註解。裏面使用了大量的反射,難免會影響性能。顯而易見,我們常用的butterKnife並沒有使用這種技術,而是使用了APT技術,編譯時完成這些操作,這樣和原始性能相差無幾,不過這樣會增

原创 性能優化-apk瘦身

作爲應用的使用者而言,apk的體積越小當然是越喜歡的。這樣不僅能節省手機的存儲空間,並且在應用市場下載的速度也快加快。所以,對於開發者來說,瞭解常用的apk瘦身技術是不可避免的。 一、圖片瘦身 1、webP使用 先看一張截圖 原

原创 架構師學習--IOC方式實現佈局、控件、事件依賴

項目中通過findViewById方式來初始化控件顯得代碼很臃腫,並且類之間的耦合度很高。爲了解決這個問題,有兩種方式可以實現: IOC:反射+註解方式,運行時處理 APT:比如butterKnife,編譯期處理 下面將用IO

原创 android 8.0源碼分析activity啓動流程

當我們點擊桌面圖標的時候,會通過Launch應用,啓動另外一個進程來啓動當前應用的activity。那麼這個activity的啓動流程是怎樣的呢?當然這一部分分爲兩個關鍵點: application啓動 activity啓動

原创 性能優化--哈夫曼算法原理

大家都知道,使用哈夫曼壓縮能達到無損壓縮,也就是說。保證了原圖質量的同時,能夠降低圖片的大小。這是什麼原理呢?首先我們需要了解的是Android系統加載圖片使用的是Skia加載庫,當然這個庫的底層還是是用的jpeg對圖片進行壓縮處

原创 flutter學習--基礎組件

開發中常用的基礎組件,包括Text、Image、TextField、Text.rich、ClipOval等。 一、Text 文本組件,相當於android中的TextView控件。 (1)看一下源碼屬性: data是必傳參數,其

原创 架構師學習--rxjava線程切換

比如有這麼一個需求:網絡上下載一張圖片,然後顯示在界面上。常規的做法可能就是開一個子線程負責網絡圖片的下載,得到圖片後,通過Handler發送到UI線程進行界面的更新。這樣寫,當然也沒有問題,但是,這樣會顯得代碼四分五裂,可讀性不

原创 性能優化--handler內存泄漏分析

開發中,如果代碼不規範很容易產生內存泄漏,比如Handler、Context、線程等使用。本文使用Android Studio自帶的Profiler和MAT工具進行內存泄漏分析。 一、內存泄漏 1、定義handler privat

原创 性能優化--垃圾回收器

首先需要了解JVM的內存管理,分爲兩大塊: 共享區內存:堆,方法區 獨佔區內存:虛擬機棧、本地方法棧、程序計數器 具體的可以參考我的另外一篇文章**JVM內存管理 。**其中程序計數器是負責程序的執行操作,比如一個程序執行到第

原创 flutter學習--佈局組件

常用的佈局組件包括AppBar、Center、Container、SizeBox、線性佈局(Column、Row)、Flex(彈性佈局)、Stack(層疊佈局)等。 一、AppBar 相當於android中的標題欄 (1)源碼屬性

原创 flutter學習--列表組件

flutter中常用的列表組件爲ListView、GridView和SliverList,本文將3種組件實現步驟和多種實現方式做個講解。 一、ListView 能夠實現靜態加載和動態加載。所謂的靜態加載就是需要設置好Listvie

原创 性能優化--啓動黑白屏優化

相信大家都會有這樣的經歷,就是新創建的項目運行app後,發現會出現短時間的白屏或黑屏,然後才進入主界面。爲什麼會出現這樣的現象呢?谷歌工程師出於怎樣的考慮呢?我們該如何解決呢?基於這樣幾個問題,開始分析。 一、手機啓動流程 當我