2016-03-31 26 views
12

Tôi đang sử dụng lướt để tải hình ảnh từ URL. Trong khi tôi đang tìm nạp hình ảnh, tôi đang hiển thị bộ tải trong chế độ xem hình ảnh. Một số hình ảnh được tải xuống lớn hơn và do đó thời gian chờ kết nối internet chậm xảy ra và ném ngoại lệThời gian chờ tải hình ảnh trượt tăng

Làm cách nào để tăng thời gian chờ?

+0

Bạn đã thử sử dụng OK HTTP thay vì chuyền? Như đã giải thích ở đây: https://github.com/bumptech/glide/wiki/Integration-Libraries#okhttp – alexislg

+1

Tôi chưa sử dụng bóng chuyền –

Trả lời

11

Sau khi tìm kiếm rất nhiều cuối cùng nhận được một câu trả lời, nếu bạn đang sử dụng volley:

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

    @Override 
    public void registerComponents(Context context, Glide glide) { 
     RequestQueue queue = new RequestQueue(// params hardcoded from Volley.newRequestQueue() 
       new DiskBasedCache(new File(context.getCacheDir(), "volley")), 
       new BasicNetwork(new HurlStack())) { 
      @Override public <T> Request<T> add(Request<T> request) { 
       request.setRetryPolicy(new DefaultRetryPolicy(10000, 1, 1)); 
       return super.add(request); 
      } 
     }; 
     queue.start(); 
     glide.register(GlideUrl.class, InputStream.class, new VolleyUrlLoader.Factory(queue)); 
    } 
} 

Thay đổi DefaultRetryPolicy theo nhu cầu của bạn

Và trong biểu hiện:

<meta-data 
      android:name="<package-name>.CustomGlide" 
      android:value="GlideModule" /> 
+0

Tôi đã khai báo lớp customGlide như bạn nói nhưng bây giờ làm thế nào để sử dụng nó trong dòng tải hình ảnh trong java lớp học ? – Dharmishtha

+0

Bạn đã khai báo trong tệp kê khai chưa? –

+0

vâng tôi đã thực hiện – Dharmishtha

9

Nếu bạn muốn sử dụng OkHttp, vui lòng nhập glide:okhttp-integration theo this và sau đó thực hiện 0 của riêng bạn:

public class CustomGlideModule extends OkHttpGlideModule { 
    @Override 
    public void applyOptions(Context context, GlideBuilder builder) { 
     // stub 
    } 

    @Override 
    public void registerComponents(Context context, Glide glide) { 
     final OkHttpClient.Builder builder = new OkHttpClient.Builder(); 

     // set your timeout here 
     builder.readTimeout(30, TimeUnit.SECONDS); 
     builder.writeTimeout(30, TimeUnit.SECONDS); 
     builder.connectTimeout(30, TimeUnit.SECONDS); 

     glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build())); 
    } 
} 
3

Dưới đây là giải pháp cho: Glide 4.3.1 & OkHttp 3.9.1, một chút khác biệt so với trước (đó là không OkHttpGlideModule nhưng AppGlideModule).

build.gradle

implementation 'com.squareup.okhttp3:okhttp:3.9.1' 
implementation 'com.github.bumptech.glide:glide:4.3.1' 
annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1' 
implementation 'com.github.bumptech.glide:okhttp3-integration:4.3.1' 

CustomGlideModule

@GlideModule 
public class CustomGlideModule extends AppGlideModule { 

    @Override 
    public void registerComponents(Context context, Glide glide, Registry registry) { 
     final OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
     builder.readTimeout(YOUR_CUSTOM_TIMEOUT, TimeUnit.SECONDS); 
     builder.writeTimeout(YOUR_CUSTOM_TIMEOUT, TimeUnit.SECONDS); 
     builder.connectTimeout(YOUR_CUSTOM_TIMEOUT, TimeUnit.SECONDS); 
     registry.append(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build())); 
    } 

} 
Các vấn đề liên quan