原创 Dagger2使用簡析(一)——簡單注入

NOTE1 : Dagger2的官網地址: https://google.github.io/dagger/ NOTE2 : 使用前請先了解JAVA中的註解基本知識,如果對實現原理感興趣可以瞭解下APT技術(不瞭解也不影響正常使用)

原创 Dagger2使用簡析(二)——@Scope、@Qualifier、@binds、dependencies、Lazy

本文所涉及的示例已上傳至Github: https://github.com/bailandi/Dagger2Demo 在瞭解了簡單注入對象的使用後,我們將問題升級。我們平常開發中爲了節省資源,在APP的生命週期內很多對象都是作爲單例存

原创 Dagger2使用簡析——@Scope、@Qualifier、@binds、dependencies、Lazy

在瞭解了簡單注入對象的使用後,我們將問題升級。我們平常開發中爲了節省資源,在APP的生命週期內很多對象都是作爲單例存在的,因此現在我們嘗試解決三個問題 將一個對象注入到Application中,並且保證它在整個APP的生命週期內是單例的

原创 Dagger2使用簡析——簡單注入

NOTE1 : Dagger2的官網地址: https://google.github.io/dagger/ NOTE2 : 使用前請先了解JAVA中的註解基本知識,如果對實現原理感興趣可以瞭解下APT技術(不瞭解也不影響正常使用) 一切實

原创 Dagger2使用簡析——序章

在具體使用前,首先來了解一個概念——依賴注入 1. 依賴注入 什麼是依賴注入 依賴注入是由於類之間的依賴關係產生的,比如: //產品依賴於操作工 public class Product{ private Worker mWorker;

原创 從一個簡單請求進入Okhttp源碼

一個簡單的OkHttp(同步)請求 OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new LoggingInterceptor()) .bu

原创 Netty之TCP粘包的原因與解決

1. TCP粘包的原因 TCP是基於數據流傳輸的協議,消息都是字節流(byte[])。發送方可能會爲了發送方便將多條比較短的消息湊到一塊一次發送,而接收方也可能因爲處理不及時導致緩存中堆積了多條消息組成的byte[],消息彼此黏連在一起,這

原创 屏幕尺寸概念

分辨率,即px*px HD:分辨率高於1280x720px,即通常所謂的720p。 Full HD: 分辨率高於1920x1080px,即通常所謂的1080p。 4K(Quad HD): 分辨率高於3840x2160px。 Retin

原创 觀察者模式

1. 模式理解 對於被觀察者,當(數據或者是其它的)發生改變時,去通知觀察者,以便於觀察者在此時作出相應的改變 2. 解決一個什麼樣的問題 假設要實現:對象A改變的時候通知對象B也改變。 實現1:在A中持有B的引用,在A改變的位置調用B

原创 從FrameLayout進入測量measure

FrameLayout的測量過程 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int count

原创 JAVA泛型與類型安全

1. 基礎泛型 //定義泛型類,接口的定義和類一樣 class A<T,P extends Number> { T t; P p;// extends 限定泛型上界 public <M> M doSomething(M para

原创 逆推分析RxLifeCycle的實現原理

直接上代碼,以下代碼爲根據RxLifeCycle的實現提取出的一個完整的上游數據源到下游數據源所經過的歷程 ,註釋已經寫的差不多了 Ob .compose(new ObservableTransformer<Object, Object>

原创 滑動之Fling

1. fling基礎(未考慮多指滑動) 初始化 //獲取認爲是fling的最小速率 mMinimumFlingVelocity= ViewConfiguration.get(context).getScaledMinimumFlingVe

原创 適配器模式

1. 模式理解 提供一個adpater中間層,這個中間層的作用就是把不統一的輸入轉換成統一的輸出 2. 解決一個什麼樣的問題 假設要實現,已知接口I,類A、B、C.....不確定數量的衆多類,現在提供了一個方法僅能接收接口I類型的參數並且通