日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > [置頂] ym―― Android網絡框架Volley(終極篇)

[置頂] ym―― Android網絡框架Volley(終極篇)

來源:程序員人生   發布時間:2014-11-11 09:03:11 閱讀次數:2422次

      沒看使用過Volley的同學可以,先看看 Android網絡框架Volley(體驗篇)和Android網絡框架Volley(實戰篇)在進行本篇學習這樣會更好的理解本篇內容.

本篇內容主要是講Volley在某些細節方面的選擇和實現.值得我們學習的地方和如果更好的使用Volley。


1.Volley本地緩存為何有時候不會進行緩存?

緩存使用條件http://www.jyygyx.com/server/必須支持,緩存,配置Cache-Control頭信息,

由于Volley需要從這些頭信息判斷緩存是不是已過期。如果已過期Volley將會重新從網絡獲得數據。

本人用抓包工具抓了沒法緩存的返回頭信息

可以支持緩存的頭信息


2.如果我們自己寫1個網絡要求框架,我們內部實現會選擇使用HttpURLConnection還是HttpClient?

我們通過源碼來看看Volley是如何選擇使用的

  

public static RequestQueue newRequestQueue(Context context, HttpStack stack) { File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR); String userAgent = "volley/0"; try { String packageName = context.getPackageName(); PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0); userAgent = packageName + "/" + info.versionCode; } catch (NameNotFoundException e) { } if (stack == null) { if (Build.VERSION.SDK_INT >= 9) { stack = new HurlStack(); } else { stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent)); } } Network network = new BasicNetwork(stack); RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network); queue.start(); return queue; }
這里會判斷如果手機系統版本號是大于9(Android 2.3)的,則創建1個HurlStack的實例,否則就創建1個HttpClientStack的實例。實際上HurlStack的內部就是使用HttpURLConnection進行網絡通訊的,而HttpClientStack的內部則是使用HttpClient進行網絡通訊的,這里為何這樣選擇呢?參考文章:Android訪問網絡,使用HttpURLConnection還是HttpClient?這就是它為什么這么快的緣由。

從這點我們可以學習到,要針對不同SDK版本做去相應更優的處理方式,這樣才能到達最好的效果。


 3.Volley給我們提供了ImageRrequest,ImageLoader,NetworkImageView,它們分別使用于甚么場景為何?

單張圖片的加載可以通過發起 ImageReuqst 要求來實現,但為了利用內存緩存,推薦使用 ImageLoader 

NetwoekImageView專門用于批量圖片加載的場景:

public class NetworkImageView extends ImageView { private String mUrl; // 默許顯示的圖片 private int mDefaultImageId; // 加載失敗時顯示的圖片 private int mErrorImageId; // 主方法入口 public void setImageUrl(String url, ImageLoader imageLoader) { mUrl = url; mImageLoader = imageLoader; // 這個方法將會對ImageView的尺寸是不是有效、是不是為同1張圖片進行判斷 // 在履行新要求前,也會取消上1次在這個View里啟動的另外一個已失效的要求 // 由于篇幅的限制和代碼行數太多,這里不貼出具體實現的代碼 loadImageIfNecessary(false); } // 如果圖片已滑離屏幕,變成不可見,將履行取消要求的操作 @Override protected void onDetachedFromWindow() { if (mImageContainer != null) mImageContainer.cancelRequest(); super.onDetachedFromWindow(); } }
在ListView加載多張圖片的時候,NetworkImageView可以避免出現圖片毛病的現象,和當NetworkImageView滑出屏幕的時候會取消加載圖片要求,這樣就保證加載多張圖片的時候用戶快速滑動列表的流暢性。給用戶帶來更優的體驗。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩精品在线看 | 日韩欧美一二三 | 国产一二三区免费观看 | 日韩精品久久久久久 | a级片在线观看 | 欧美一区二区三区在线播放 | a毛片在线观看 | 欧美激情一区 | 国产三级一区二区三区 | 在线日韩一区 | 久久嫩草 | 黄色在线网站 | 亚洲视频一区二区 | 国内一级毛片 | 能在线看的av | 在线天堂v| 五月毛片| 午夜欧美一区二区三区在线播放 | 欧美13videosex性极品 | 亚洲精品福利视频 | 成人影院免费观看 | 精品成人久久久 | 毛片免费观看网站 | 欧美精品一区二区三区四区五区 | 九九精品在线 | 亚洲一区二区三区精品视频 | 国产精品日本一区二区不卡视频 | 性爱视频在线播放 | 日韩a在线播放 | 色网在线观看 | 日韩毛片在线观看 | 国产一区二区大片在线观看 | 日韩欧美亚洲一区二区 | 日韩免费av| 亚洲最大色综合成人av | av在线大全 | 热久久综合网 | 久久精品亚洲精品 | 日韩一级欧美 | 久久久网站免费 | 正在播放日韩 |