原创 這可能是最詳細的 EventBus 源碼分析03 - EventBus 的註冊(下篇)

這可能是最詳細的 EventBus 源碼分析01 - EventBus 對象的創建 這可能是最詳細的 EventBus 源碼分析02 - EventBus 的註冊(上篇) 這可能是最詳細的 EventBus 源碼分析03 - EventBu

原创 這可能是最詳細的 EventBus 源碼分析05 - Subscriber Index

這可能是最詳細的 EventBus 源碼分析01 - EventBus 對象的創建 這可能是最詳細的 EventBus 源碼分析02 - EventBus 的註冊(上篇) 這可能是最詳細的 EventBus 源碼分析03 - EventBu

原创 這可能是最詳細的 EventBus 源碼分析04 - 事件的發送與執行

前面三章分別分析了 EventBus 的創建,註冊過程, 這個章節將會接着分析 EventBus 事件的發送. EventBus 的事件發送分爲兩種, 一種爲發送普通事件, 一種爲粘性事件 EventBus.getDefault().po

原创 適配問題 - Android10(Q 29) 適配

在 Android10.0 以上通過絕對路徑加載非沙盒目錄下的本地圖片不顯示,需要通過文件 Uri 來訪問。App 沙盒目錄有兩個位置 /sdcard/Android/data/包名/ 和 /data/data/包名/,這兩個目錄 App

原创 Android 修改字體/顯示及分辨率

問題:在系統設置中修改字體大小、顯示大小和分辨率大小,導致App中顯示出現異常。 解決: 當系統修改字體大小,我們開發過程中習慣將字體的單位設置爲sp,這時具體的大小是跟隨系統字體大小的設置而變化的,所以當我們希望不隨着系統的“字體大小”

原创 EventBus 源碼的閱讀03 - EventBus 的註冊(下篇)

在上篇中, 分析學習了 EventBus 註冊過程中的第一步. 就是獲取註冊類中所有的訂閱方法. 下篇主要分析的是在獲得所有訂閱方法後, 逐個對他們進行訂閱. 那麼具體是如何進行訂閱的呢. 下面直接進入正題. EventBus.regi

原创 EventBus 源碼的閱讀02 - EventBus 的註冊(上篇)

上一章分析學習了 EventBus 對象的創建, 本章內容將對 EventBus 的註冊源碼進行分析. 由於代碼較長, 所以分爲上下兩個章節. 上篇: 分析的是如何獲取訂閱者類中的訂閱方法的. 下篇: 分析的是在獲取到訂閱者類中的所有訂閱

原创 EventBus 源碼的閱讀01 - EventBus 對象的創建

相信大家對 EventBus 都是非常熟悉了. 做 Android 開發的同學基本都使用過這個框架. 它的用法基本分爲以下幾個步驟 定義事件 event. 通過註解, 準備訂閱者. 訂閱者同時需要在事件總線上註冊和註銷自己. (regis

原创 Android Studio 無法運行 main 方法

提示: * What went wrong: A problem occurred configuring project ':app'. > Could not create task ':app:Client.main()'.

原创 Android 中使用工廠模式來管理數據緩存及存儲

我們在實際開發中, 會有很多地方都需要緩存數據, 一些常用的需要緩存到內存中, 不常用的需要緩存到數據庫或者 SD 卡中. 這些需要緩存的數據對我們來說, 內部的結構差異並不是很大, 都是存取數據. 如果說爲每一種存儲都單獨寫一個工具類來

原创 Activity 管理工具

我們做的 APP 上有沒有遇到下面兩種情況 在詳情頁或者某個頁面點擊某個操作的時候, 需要登錄驗證, 沒有登錄的時候需要跳轉到登錄界面, 但是有可能還需要再去註冊. 註冊成功後直接登錄, 並且回到跳轉登錄前的頁面. APP 需要單點登錄

原创 一個例子理解 Butterknife 基本原理

說起 ButterKnife 相信大多人都知道這麼一個框架, 它是一個專注於 Android 系統的 View 注入框架, 簡化了我們的 findViewById, OnClick, getString() 以及加載動畫等操作, 給平時開

原创 Android 使用 AOP 入門學習

網上有很多介紹 AOP 的, 就不多說什麼了, 這裏就直接開始了. 場景: 比如界面上有 N 個按鈕, 有網絡的時候, 點擊按鈕可以進入下一頁, 沒有網絡的時候, 不響應點擊事件, 那麼使用 AOP 的這種方式就很容易實現, 當然, 這

原创 java 基礎回顧 - 反射

反射就是把java類中的各種成分映射成一個個的 Java 對象 反射的主要目的是爲了獲取受保護的或者是隱藏的 類/字段/方法, 然後調用. 在反射中所有的功能都是基於字節碼 ( class ). class 在內存中應該只有一份, 而且 c

原创 Android Studio 4.0 自定義註解處理器不觸發

昨天在做註解解釋器的時候, 死活不打印 Messager, 也沒有自動生成註解文件 環境: Android Studio 4.0, gradle:4.0.0 按以下修改後,即可成功觸發. auto-service 不僅要 implem