原创 深入源碼分析Handler 消息機制 、Looper、MessageQueue 消息同步屏障、IdleHandler、Message 複用

Handler 線程通信 基本使用 在Android 中Handler大多數都是在子線程中發送消息,到主線程中更新UI,下面是基本使用 // 步驟1:在主線程中 通過匿名內部類 創建Handler類對象

原创 Github Actions 使用指南和Android 持續集成示例

前言 Github Actions 官方文檔(以下所有的官方文檔的總入口)對很多細節都進行了詳細說明,但是如果你是第一次接觸,看了很多關於細節的東西,不知所云,導致很快忘記。本篇文章,從我項目的代碼,從總體上,認識一下Action

原创 記錄我修改JakeWharton的ButterKnife bug的實用經驗

前言 不得不說ButterKnife是一個很有學習價值的項目。我從學習源碼,修改bug後,最後pull request,學到了很多東西。如果你對Butterknife 源碼還不瞭解,建議先看一下這篇文章。本文章不介紹基礎的源碼流程

原创 Android字節碼插樁——詳細講解 附帶Demo

前言 什麼是字節碼插樁 字節碼插樁就是在構建的過程中,通過修改已經編譯完成的字節碼文件,也就是class文件,來實現功能的添加 從技術上來說,字節碼插樁是自定義Gradle插件、ASM、Java字節碼、切面編程的綜合應用 字節碼插

原创 Fragment 源碼淺析——Fragment(三)

一、 與 Fragment 相關的類 我們平時使用fragment的時候都是通過創建事務,來操作fragment, getSupportFragmentManager() //獲取到FragmentManager,它的實

原创 Lifecycle 使用與源碼分析——徹底搞懂Lifecycle原理

一、Lifecycle 介紹 Lifecycle是一個生命週期感知組件,一般用來響應Activity、Fragment等組件的生命週期變化,並將變化通知到已註冊的觀察者。有助於更好地組織代碼,讓代碼邏輯符合生命週期規範,減少內存泄

原创 Android7.0 網絡安全配置、自定義okhttp證書 ——解決HTTPs 抓包問題

Android7.0 HTTPs 抓包問題 很多小夥伴,遇到在Android7.0 開發APP遇到無法抓包的問題,如果是配置了Network security configuration,可以加一行代碼就可以解決 在Android

原创 LiveData 使用與源碼分析——完全搞懂LiveData原理

一、LiveData簡介 LiveData是google官方架構JetPack系列的一個響應式開發框架,LiveData是一個可以被觀察的數據持有者類。說到響應式開發或者說觀察者就不免想到RxJava,RxJava將觀察者模式運用

原创 InputFilter 和inputType屬性 ——Edittext(二)

簡介 Android開發中,輸入框Edittext,經常會遇到控制輸入類型,比如只輸入數字,十進制,輸入金額(兩位小數 )等等。 Edittext inputType屬性提供了一些規則,可以滿足大部分的需求 InputFil

原创 DataBinding是如何實現數據變化視圖更新的——源碼分析

在使用databinding時,更新UI界面,如果是使用普通變量的,那麼在變量發生變化的時候,UI界面並不會發生變化 一、數據綁定 視圖跟隨數據刷新 數據變化是視圖也跟着變化則需要使用到以下兩種方法 繼承BaseObservable

原创 四種commit使用細節及源碼分析——Fragment(二)

一、 每個事務(FragmentTranscation)只能被commit一次 介紹 代碼段一 public class MainActivity extends AppCompatActivity { @Override

原创 java類加載 雙親委派

最近一直在面試,一直沒空寫這篇文章,等工作敲定後,再來補充吧

原创 Android 系統源碼——下載到編譯

一直想下載、編譯、調試一下Android源碼 ,加強對一些framework的理解,搞了好多次,終於可以正常調試了。這裏進行一些總結和分享。 Android源碼到模擬器運行,主要有的四個步驟: 下載源碼 搭建編譯環境 準備編譯 我

原创 爲什麼遞歸與尾遞歸會棧溢出?優化原理是什麼?

一、遞歸與尾遞歸 遞歸: 在函數的定義中使用函數自身的方法 Kotlin代碼實現一個n的累加的函數 fun recursive(n:Int):Int { if (n == 1) { return 1

原创 Gradle深入理解指南

這篇文章只給出一個關於Gradle總體的認知,具體細節,請查看參考的文章 一、什麼是構建工具 一個項目從代碼到可運行文件(例如:Android 代碼 到 apk),需要編譯、link依賴庫、鏈接資源、打包。這些操作也可以自己手動執行,