原创 synchronized簡版Looper

我們知道Looper的工作機制就是不斷的從MessageQueue裏面獲取消息,沒有消息的時候則等待,直到有消息到來,看Looper的源碼發現阻塞等待和通知用的是linux的epoll,它是linux內核下高效的的異步喚醒機制。既

原创 一個枚舉搞定Activity之間的數據傳遞

正常我們從一個activity跳入另一個界面時候,如果需要攜帶參數。則代碼如下 public static void startActivity(Activity activity,UserChange userChange){

原创 Glide源碼解讀(二)

前面文章分析到buildRequest方法,現在繼續看 buildRequest方法,調用了buildRequestRecursive方法 private Request buildRequest(Target<Transco

原创 Glide源碼解讀(一)

#Glide 流程 3.5.2 作爲一個優秀的通用圖片加載庫。有着幾乎所有的優點,使用簡單,加載各種格式圖片資源,預加載圖片資源,根據控件大小合理縮放資源,支持圖像變換操作等等,既然這麼優秀的框架,那就值得我們好好深入理解它的設計

原创 LeakCanary源碼分析

從sample項目中的入口開始查看: public class ExampleApplication extends Application { @Override public void onCreate() {

原创 Picasso源碼分析

首先從調用第一行代碼看起 // Trigger the download of the URL asynchronously into the image view. Picasso.with() .load(url) .placehol

原创 Android ble藍牙開發介紹以及遇到的坑

Android ble藍牙開發 BLE介紹 安卓4.3(API 18)爲BLE的核心功能提供平臺支持和API,App可以利用它來發現設備、查詢服務和讀寫特性。相比傳統的藍牙,BLE更顯著的特點是低功耗。這一優點使AndroidApp可以與

原创 圖表之環形圖

最近項目新增一個環形圖表數據查看的。 效果圖如下 在網上找了相關畫環形的,都不符合需求,找到一個類似的代碼RoundRateView,基本畫出了外面圓環,但是有瑕疵,然後再修改 首先根據傳入的4個數值,計算出所佔比例和相應的角度。然

原创 圖表之折線圖

最近項目新增一個圖表數據查看的。 效果圖如下 各個折線點x,y點座標很好計算。不好畫的是如何讓這個折線不穿過這個空心圓 如果折線穿過空心圓,則變成下面這個樣子 折線點畫圓沒錯,但是直接連接折線點肯定和圓有相交,但是這又是個空心圓,

原创 採坑記之greendao緩存

 採坑記之greendao緩存項目裏面ORM框架用的greendao.測試中出現一個問題,在一個界面獲取數據庫的一個對象,然後更改對象的屬性值,沒有點擊保存按鈕。再進入這個界面時,從數據庫同樣獲取的這個對象居然改變了。之前有看到網上說gr

原创 深入Java虛擬機-讀書筆記一Java運行時數據區域和對象創建和訪問

深入Java虛擬機-讀書筆記一Java運行時數據區域和對象創建和訪問 Java運行時數據區域 Java虛擬機在執行程序時把它所管理的內存劃分爲若干不同的數據區域。這些區域都有各自的用戶,以及創建和銷燬的時間。如下圖 程序計數器 一塊較

原创 EventBus 源碼解讀

EventBus 基礎 發佈者通過EventBus發佈事件,訂閱者通過EventBus訂閱事件。當發佈者發佈事件時,訂閱該事件的訂閱者的事件處理方法將被調用。這裏的事件,指的是一個對象類型。只有對象類型相同時,訂閱方法纔會被處理,還支持

原创 CSDN-markdown編輯器語法

歡迎使用Markdown編輯器寫博客 本Markdown編輯器使用StackEdit修改而來,用它寫博客,將會帶來全新的體驗哦: Markdown和擴展Markdown簡潔的語法 代碼塊高亮 圖片鏈接和圖片上傳 LaTex數學公式 UM

原创 BroadcastReceiver流程解析

 ContextImpl的registerReceiver方法首先查看註冊方法@Overridepublic Intent registerReceiver(BroadcastReceiver receiver, IntentFilter

原创 View觸摸事件源碼分析

View的dispatchTouchEvent方法的省略版源碼public boolean dispatchTouchEvent(MotionEvent event) {    //dispatchTouchEvent的返回值    bo