原创 (二) Jetpack LiveData 源碼分析

參考 代碼示例 class MyViewModel : ViewModel() { val myLiveData: MutableLiveData<Int> by lazy { MutableLiveD

原创 (一) Jetpack Lifecycle 源碼分析

文章一 文章二 文章三 文章四 文章五 文章六 文章七 依賴 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' kapt 'androidx.life

原创 Android 8.0 啓動圖標適配

參考 和UI設計師商量下,將之前的logo分爲前景與背景兩張圖. 之前的logo圖如下: 現在需要將上圖分離爲前景與背景圖如下: 鼠標焦點放在src目錄上,按下Windows:Ctrl+Shift+A 或者 M

原创 (一) Dagger2 @Inject分析一

代碼示例 // 對象提供方 class Tiger { // @Inject:該註解用於類構造方法上表示該類可以被Dagger2實例化對象後供注射器使用. @Inject public Tiger()

原创 (三) Dagger2 @Module分析一

代碼示例 class Tiger { public void sleep() { System.out.println("Tiger sleeping"); } } // 爲注射器提供工廠類 //

原创 Android StatusBarUtil源碼閱讀

StatusBarUtil地址 setColor()設置狀態欄顏色 從設置狀態欄顏色方法開始看. public class StatusBarUtil { /** * 設置狀態欄顏色 *

原创 (二) Dagger2 @Inject分析二

代碼示例 class Food { // @Inject:該註解用於類構造方法上表示該類可以被Dagger2實例化對象後供注射器使用. @Inject public Food() { } } cla

原创 (六) Dagger2 @Module分析四

代碼示例 class Food { } class Tiger { // 假如老虎需要食物 Food food; public Tiger(Food food) { this.food =

原创 (四) Dagger2 @Module分析二

代碼示例 class Food { // @Inject:該註解用於類構造方法上表示該類可以被Dagger2實例化對象後供注射器使用. @Inject public Food() { } } cla

原创 Toutiao 項目源碼閱讀

項目地址 一款第三方今日頭條客戶端, MVP + RxJava + Retrofit 架構 標準的MVP架構 IBasePresenter層 每個P層都有刷新界面以及顯示網絡錯誤需求 public interface IBas

原创 (十二) Dagger2 @IntoMap案例分析

代碼示例 // 父類 abstract class Animal { // 抽象方法 abstract void sleep(); } // 子類 class Tiger extends Animal {

原创 (十) Dagger2 懶加載案例分析

代碼示例 class Tiger { public void sleep() { System.out.println("Tiger sleeping"); } } @Module class Zo

原创 (七) Dagger2 Component間的依賴

代碼示例 假如PlaygroundComponent注射器需要ZooComponent提供對象. class Tiger { public void sleep() { System.out.println

原创 (五) Dagger2 @Module分析三

代碼示例 class Food { } class Tiger { // 假如老虎需要食物 Food food; public Tiger(Food food) { this.food =

原创 (九) Dagger2 @Qualifier案例分析

代碼示例 class Tiger { String name; public Tiger(String name) { this.name = name; } public Tige