原创 對 LiveData 的源碼分析

Q: Activity 中使用 LiveData 時,是如何保證內存不泄漏的? A: 很簡單,調用 LiveData.observe 來進行監聽時,observe 方法內會添加一個 Activity.onDestroy 的監聽。

原创 View 觸摸事件分發例子

點擊事件的觸發流程好比去小區送快遞,還不知道是誰的快遞。 例子對照: 樓(ViewGroup)、進樓(ViewGroup.dispatchTouchEvent)、樓下門崗攔截(ViewGroup.onInterceptTouchEven

原创 svn分支初學筆記

分支的概念 比如當項目要添加一個實驗階段的功能(可能棄用),並要求功能模塊不影響主幹時,可以用分支將新功能寫在分支中。 分支與主幹是相互獨立的,在分支中提交的代碼無法在主幹中更新下來,但反過來也是如此。分支與主幹的同步只能通過“合

原创 Android 線程間通信原理

此文章主涉及原理部分,需要已經懂得如何使用Handler Handler衆所周知,它是Android中切換線程的初始方案,可以大體分爲: 主線程 -> 子線程 與 子線程 -> 主線程。 《先講一個基礎的 主線程->子線程原理》

原创 依賴 core-ktx 後報錯 Failed resolution of: Landroidx/core/widget/TintableCompoundDrawablesView

運行時報錯: 繼承AppCompatTextView時 - 無法訪問TintableCompoundDrawablesView 使用AppCompatTextView時 - Error inflating class androidx.a

原创 obtainStyledAttributes 使用方式

簡單圖解: 圖1、一個參數的 obtainStyledAttributes 函數。 圖2、兩個參數的 obtainStyledAttributes 函數 圖3、四個參數的 obtainStyledAttributes 函數 測試代碼

原创 集成bugly熱後閃退 Unable to instantiate TinkerPatchReflectApplication. ClassNotFoundException Application

報錯:         java.lang.RuntimeException: Unable to instantiate application com.tencent.bugly.beta.tinker.TinkerPatchRefl

原创 TextView 雙下劃線 / 下劃線粗細不同 bug解決

解決方案: 不要爲 textView 添加下劃線 paintFlag,改用 SpannableStringBuilder 或 Spanny 爲文字添加下劃線,這樣下劃線會統一到文字底fontMetrics.descent位置 爲何有此問題

原创 ConstraintLayout 高度錯誤。約束佈局高度錯誤。當ConstraintLayout互相嵌套時,高度從撐滿變成自適應

ConstraintLayout 約束佈局嵌套約束佈局時,高度又計算錯誤了。 錯誤情況如下:圖中紅色框部分是約束佈局,紫色區域是設置了高度爲 match_parent 的 View,但實際運行效果是 warp_content。當我把內部的

原创 Handler 的核心 MessageQueue 動圖

前言: 最近學習Handler切換線程的源碼,花了兩天時間終於看懂了,發現原理非常簡單,就是個人的理解能力太差,如果有一張動圖,一看就能明白其原理,那該多好啊,於是花了一天時間學習PS製作了幾張動圖。 吐槽下,PS只做動圖是真的麻煩,很多

原创 從行情角度思考,啥是so文件

最近使用三方框架,需要導入so包,不知道應該哪個型號的,查了一堆感覺懵逼,直接記錄下用以備忘。 個人理解,若有不對,希望指正   是什麼: Java是有極限的,Java只在JVM虛擬機上做事,JVM無法直接操作系統,也沒有提供系統

原创 沒必要使用 Arguments 操作 Fragment

沒必要使用 arguments: arguments 有着和 intent 一樣的功能:在頁面銷燬後依然保留值,並能讓頁面通過自己重啓。 但是真的有使用它的場景嗎? 崩潰重建?當Fragment中出現崩潰錯誤,整個Activity會銷燬

原创 泛型字節碼學習記錄

//拋出問題 泛型的類型擦除,Java與Kotlin的泛型都是假泛型,會在運行時被擦除,ArrayList<String>() 在運行時等於 ArrayList<Object>()。 所以像 Gson.fromJson 這樣在運行時通過

原创 佈局測量分析記錄

 QA總結: Q:重寫分析onMeasure有啥用? A: 1、證實 onMeasure 也是像 onLayout 那樣從外到內遍歷,先子後父的。 2、所有 onMeasure 都是被 measure 而非 onLayout 調用

原创 個人思考:warp_content 與 match_parent 並不簡單

當我在ScrollView中嵌套一個WebView,並設置WebView的高度爲warp時,驚訝的發現webView竟然全部的展示了出來(WebView外面有match的父容器),於是開始思考 warp_content、match_par