編輯:Android資訊
Google I/O 2013 大會上發布的 Android 異步網絡請求框架和圖片加載框架。
試用場景:適合數據量小,通信頻繁的網絡操作。
git clone https://android.googlesource.com/platform/frameworks/volley

Volley Architect
如上官方給出的Volley架構圖,藍色為主線程,綠色為緩存線程,橙色是網絡線程。
總的來說,就是一個請求隊列和三種線程,UI線程(1個),Cache線程(1個)和Network線程(默認是4個)。
先簡介一下三個類的作用:
然後看創建請求隊列方法內的代碼:
public static RequestQueue newRequestQueue(Context context, HttpStack stack) {
...
Network network = new BasicNetwork(stack);
RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network);
queue.start();
return queue;
}
看到這裡,需要了解三個類的作用:
創建Network需要HttpStatck,如果newRequestQueue傳入的stack為null,API Level >= 9,采用基於 HttpURLConnection 的 HurlStack;小於 9,采用基於 HttpClient 的 HttpClientStack。
if (stack == null) {
if (Build.VERSION.SDK_INT >= 9) {
stack = new HurlStack();
} else {
// Prior to Gingerbread, HttpUrlConnection was unreliable.
// See: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
}
}
處理HTTP請求的HttpStatck也可以自定義,比如使用OKHttp,具體可以參見我的另一篇文章使用OKHttp處理Volley的底層HTTP請求。
接下來啟動所需的所有線程:
public void start() {
stop(); // Make sure any currently running dispatchers are stopped.
// Create the cache dispatcher and start it.
mCacheDispatcher = new CacheDispatcher(mCacheQueue, mNetworkQueue, mCache, mDelivery);
mCacheDispatcher.start();
// Create network dispatchers (and corresponding threads) up to the pool size.
for (int i = 0; i < mDispatchers.length; i++) {
NetworkDispatcher networkDispatcher = new NetworkDispatcher(mNetworkQueue, mNetwork,
mCache, mDelivery);
mDispatchers[i] = networkDispatcher;
networkDispatcher.start();
}
}
接下來再回頭看一下Volley的架構圖。
一個簡單易用的 Android 導航欄TitleBar
一個簡單易用的導航欄TitleBar,可以輕松實現IOS導航欄的各種效果整個代碼全部集中在TitleBar.java中,所有控件都動態生成,動態布局。不需要引用任
Gradle for Android 第一篇( 從 Gradle 和 AS 開始 )
正如大家所見,這是本英文書,而由於國內的gradle翻譯資料不全,所以特次開辟專欄,翻譯gradle for android這本書,同時添加自己的心得體會以及在實
Android TextView 預渲染詳解
Android中的TextView是整個framework中最復雜的控件之一,負責Android中顯示文本的大部分工作,framwork中 的許多控件也直接或者間
Android Translucent System Bar 的最佳實踐
近幾天准備抽空總結Android一些系統UI的實踐使用,於是開始動手建了一個庫 AndroidSystemUiTraining ,邊撸代碼邊寫總結 今天開寫第一篇