2016-05-13 75 views
6

我正在使用Glide加載圖像,我面臨的問題是,當我運行緩慢的互聯網連接的應用程序時,我得到SocketTimeOutException。所以要解決這個問題,我想使用自定義OkHttpClient,以便我可以更改HttpClient的超時這是我有的代碼。如何設置OkHttpClient滑動

public class MyGlideModule implements GlideModule { 
    @Override 
    public void applyOptions(Context context, GlideBuilder builder) { 

    } 

    @Override 
    public void registerComponents(Context context, Glide glide) { 
     OkHttpClient client = new OkHttpClient(); 
     client.setConnectTimeout(15, TimeUnit.SECONDS); 
     client.setReadTimeout(15,TimeUnit.SECONDS); 
     OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client); 
     glide.register(GlideUrl.class, InputStream.class, factory); 
    } 
} 

但是OkHttpUrlLoader在Glide API中沒有更多。所以我想知道怎樣才能設置OkHttpClient滑翔

+0

滑翔直接下載圖像n設置在圖像視圖 –

+0

@DixitPanchal是的,但你可以使用GlideModule更改配置,如HttpClient – user2934930

回答

4

要使用OkHttpUrlLoader你需要添加依賴@Darwin說,但有依賴項問題https://github.com/bumptech/glide/issues/941。所以,你會在你的依賴

compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){ 
     exclude group: 'glide-parent' 
    } 
+1

它找不到OkHttpUrlLoader如果我這樣做 –

2

您需要okhttp3集成依賴添加到您的應用程序gradile文件

dependencies { 
compile 'com.github.bumptech.glide:okhttp3-integration:[email protected]' 
//compile 'com.squareup.okhttp3:okhttp:3.2.0'} 

Reffer官方鏈接glide integration module

之後ü可以添加GlideModule與okhttp ...

+0

如果你使用gradle,你可以簡單地通過依賴aar包含這個模塊,模塊將被合併到manifest中。您無需自行添加GlideModule。 – Murciegalo84

10

,因爲滑行4.0.0它已經改變了一點點被加入這一點。

首先GlideModule被棄用,你需要使用AppGlideModule如果您正在開發用於圖書館發展的應用和LibraryGlideModule。您需要使用@GlideModule以上的自定義AppGlideModule類。

其次沒有register()方法在Glide對象。

最後okhttp3會使用一個構建器。

它就會像下面的應用:

@GlideModule 
    private class CustomGlideModule extends AppGlideModule { 

     @Override 
     public void registerComponents(Context context, Glide glide, Registry registry) { 
      OkHttpClient client = new OkHttpClient.Builder() 
        .readTimeout(15, TimeUnit.SECONDS) 
        .connectTimeout(15, TimeUnit.SECONDS) 
        .build(); 

     OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client); 

      glide.getRegistry().replace(GlideUrl.class, InputStream.class, factory); 
     } 
    } 

你需要有所有這些依賴關係在您的應用程序文件的gradle確切的版本:

compile "com.squareup.okhttp3:okhttp:3.8.1" 
    compile 'com.github.bumptech.glide:glide:4.0.0' 
    compile ('com.github.bumptech.glide:okhttp3-integration:4.0.0'){ 
     exclude group: 'glide-parent' 
    } 
+2

它適用於我,除了在connecttimeout行末尾缺少.build()。 –

+1

已更正。謝謝 –