【譯】集成OkHttp 3作為網(wǎng)絡(luò)棧

Jake Wharton的OkHttp3下載器

Jake Wharton已經(jīng)為Picasso發(fā)布了一個OkHttp3的下載器。它在OkHttp3的新架構(gòu)環(huán)境下,使其兼容至Picasso2的網(wǎng)絡(luò)實(shí)現(xiàn)。讓我們一起看看,并把它集成進(jìn)來吧。

幸運(yùn)的是,它提供了一個Gradle依賴。因此,你只需將下面這段個代碼添加至build.gradle中,然后同步工程即可:

compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'  

設(shè)置OkHttp 3作為Picasso的下載器

下一步要做的就是設(shè)置OkHttp 3作為Picasso的下載器。首先,創(chuàng)建OkHttp以及OkHttp 3的下載器:

okhttp3.OkHttpClient okHttp3Client = new okhttp3.OkHttpClient();  
OkHttp3Downloader okHttp3Downloader = new OkHttp3Downloader(okHttp3Client);  

其次,將這個下載器添加到Picasso實(shí)例中。我們使用Picasso.Builder來自定義Picasso實(shí)例。如果你想了解Picasso.Builder,可以翻閱之前的博客文章

Picasso picasso = new Picasso.Builder(context)  
        .downloader(new CustomOkHttp3Downloader(client))
        .build();

第三,也是最后一步,使用我們新創(chuàng)建的Picasso實(shí)例去加載圖像:

String internetUrl = "http://i.imgur.com/DvpvklR.png";  
picasso  
        .with(context)
        .load(internetUrl)
        .into(imageView1);

就這樣,我們達(dá)成了目標(biāo),圖像將通過OkHttp 3加載。 \o/

設(shè)置全局Picasso實(shí)例的下載器

現(xiàn)在你可能會問,難道每一次都需要新建一個實(shí)例去加載圖像嗎?當(dāng)然不用,我們在之前介紹Picasso.Builder文章中介紹過,你可以設(shè)置一個全局的Picasso實(shí)例:

// set the global instance to use this Picasso object
// all following Picasso (with Picasso.with(Context context) requests will use this Picasso object
// you can only use the setSingletonInstance() method once!
try {  
    Picasso.setSingletonInstance(picasso);
} catch (IllegalStateException ignored) {
    // Picasso instance was already set
    // cannot set it after Picasso.with(Context) was already in use
}

之后的所有請求,都會復(fù)用同一個Picasso實(shí)例。并且,整個應(yīng)用都會使用OkHttp 3加載圖像。

自定義OkHttp3Downloader

這個集成庫的核心僅有一個OkHttp3Downloader類。它圍繞OkHttp 3實(shí)現(xiàn)。如果你不想像我們上面展示的那樣,添加gradle依賴,而且又不得不需要定制OkHttp 3的包裝類,你完全可以從Jake的倉庫中復(fù)制這個類。

假設(shè)你已經(jīng)自定義了CustomOkHttp3Downloader類,實(shí)現(xiàn)了Downloader接口,并遵循了最初的設(shè)計(jì)。你可以使用同樣的方式,添加它作為網(wǎng)絡(luò)加載棧:

okhttp3.OkHttpClient client = new okhttp3.OkHttpClient();  
Picasso picasso = new Picasso.Builder(context)  
        .downloader(new CustomOkHttp3Downloader(client))
        .build();

String internetUrl = "http://i.imgur.com/DvpvklR.png";  
picasso  
        .with(context)
        .load(internetUrl)
        .into(imageView2);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,334評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • 你是個冰冷的建筑 我透過青磚撫摸你歷史的體溫 城墻上刻滿了古人今人的刀痕 當(dāng)你臥睡的青嶺變的蒼黃 當(dāng)北風(fēng)變得蒼勁 ...
    很高很瘦閱讀 353評論 0 0
  • 今天月亮的二元對立和藍(lán)鷹俯瞰的視野,引導(dǎo)我們用覺察和覺知清空頭腦的垃圾、跳脫二元對立,看到我們真正想要成長為的自己...
    艾人家家Aileen_LiLi閱讀 248評論 0 0
  • 聽一首歌 單曲循環(huán)到淚流滿面 歌詞寫盡深藏的心事 曲調(diào)穿透未盡的滄桑 蜷縮著靈魂 只為逃避那未知的傷 去忍受現(xiàn)在這...
    心心稀語閱讀 130評論 0 0