編輯: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的架構圖。
一個簡單易用的導航欄TitleBar,可以輕松實現IOS導航欄的各種效果整個代碼全部集中在TitleBar.java中,所有控件都動態生成,動態布局。不需要引用任
正如大家所見,這是本英文書,而由於國內的gradle翻譯資料不全,所以特次開辟專欄,翻譯gradle for android這本書,同時添加自己的心得體會以及在實
Android中的TextView是整個framework中最復雜的控件之一,負責Android中顯示文本的大部分工作,framwork中 的許多控件也直接或者間
近幾天准備抽空總結Android一些系統UI的實踐使用,於是開始動手建了一個庫 AndroidSystemUiTraining ,邊撸代碼邊寫總結 今天開寫第一篇