原创 Https中SSL握手建立的過程

假設現在有客戶端 A 和服務器 B : 1、首先,客戶端 A 訪問服務器 B ,比如我們用瀏覽器打開一個網頁 www.baidu.com ,這時,瀏覽器就是客戶端 A ,百度的服務器就是服務器 B 了。這時候客戶端 A 會生成一個隨機數

原创 Flutter 與原生通訊

開發中通常需要 Flutter 端與原生內容進行交互。Flutter 定義了三種不同的Channel BasicMessageChannel:用於傳遞字符串和半結構化的信息 MethodChannel:用於傳遞方法調用 EventChan

原创 android--組件化

       android組件化現在來說算是比較老生常談的一種方式了,寫此文主要是回顧+鍛鍊自己表達能力,主要描述下思想,具體的代碼實現不做過多贅述,主要是仿照實現了ARouter的功能       常用的開發大體上來說分爲了模塊化,組

原创 【白話】measure,layout,draw

這三者的順序就相當於蓋房子 1)先測量地基,有多大的尺寸可以讓我來操作(measure) 2)再來佈局設計,根據測量後的尺寸來設計出符合自己審美的佈局(layout) 3)繪製,開始真正的裝修了(draw)   Measure 主要是調用

原创 【白話】App從啓動到頁面顯示出來發生了什麼

點擊App圖標,Launcher進程採用Binder IPC向system_server進程發起startActivity請求 system_server收到請求後,向Zygote進程發送創建進程的請求 Zygote進程fork出新的子進

原创 【白話】APK編譯打包流程

Java編譯器對工程本身的java代碼進行編譯,這些java代碼有三個來源:App的源代碼,有資源文件生成的R文件(aapt工具),AIDL文件生成的Java接口文件,產出爲.class文件   用AAPT編譯R.java文件 編譯AID

原创 Window,Activity,DecorView,ViewRootImpl之間的關係

Activity 不負責控制視圖,只是控制生命週期和處理事件,真正控制視圖的是Window,Activity中含有一個Window,Window纔是真正代表一個窗口 Window 視圖的承載器,內部持有DecorView,而DecorVi

原创 白話measure,layout,draw

這三者的順序就相當於蓋房子 1)先測量地基,有多大的尺寸可以讓我來操作(measure) 2)再來佈局設計,根據測量後的尺寸來設計出符合自己審美的佈局(layout) 3)繪製,開始真正的裝修了(draw)   Measure 主要是調用

原创 finally與return執行順序

Java中異常捕獲機制try...catch...finally塊中的finally語句是不是一定會被執行? 不一定,(1)需要執行到try語句中(2)try中如果有System.exit(0)也不會執行,因爲System.exit(0)

原创 手寫Glide框架

    文章主要是仿照Glide方式來實現了圖片加載,當然功能沒有Glide那麼全面,主要用來練習總結     寫一個Glide框架,首先需要我們來分析一下實現思路,主要分了六大步驟,接下來我們會一步一步來實現操作  資源封裝  活動緩存

原创 a*2爲什麼比a>>1效率低

 a*2 與 a>>1的執行結果是一樣的,但是執行效率不同 a>>1執行效率比前者高出很多,主要是因爲在計算時計算機會採用逆波蘭表達式, 標準四則運算表達式—中綴表達式 9+(3-1)*3+10/2     = 20 計算機採用—後綴表達

原创 用面向對象的方式來操作數據庫

正常來說使用sql來操作數據庫的話沒啥問題,但是對於一些不太擅長寫sql的同學來說,通過面向對象的方式來操作數據庫,可以極大的避免寫sql時不小心犯錯誤的情況,接下來讓我們直接進入主題 首先是需要先定義接口規範,即數據庫常用的增刪改查操作

原创 RecyclerView之拖拽滑動

recyclerview控件大家已經用的非常熟悉了,最近開發時做仿微信發送朋友圈注意到微信選完圖片之後可以對圖片進行拖拽刪除,所以進行了嘗試,其實recyclerview本身已經提供了幫助類,主要是繼承其回調,下面對代碼進行講解分析。

原创 android-自定義換膚(1)

    本質上來說換膚其實挺簡單的,主要抓住關鍵的點,就是獲取到控件去設置對應的顏色,字體,背景等    正常來說我們使用activity來加載一個頁面的時候使用setContentView(R.layout.activity_main)

原创 android-自定義換膚(2)

android-自定義換膚(1) https://blog.csdn.net/tiangaopan/article/details/104895134 前面說到本質上是通過實現LayoutInflater.Factory2,在onCrea