@Override public void registerComponents(Context context, Glide glide, Registry registry) { registry.replace(GlideUrl.class, InputStream.class, new VolleyUrlLoader.Factory(context)); } }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { registry.replace(GlideUrl.class, InputStream.class, new VolleyUrlLoader.Factory(context)); } }
@Override public void registerComponents(Context context, Glide glide, Registry registry) { registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory()); } }
@Override public void registerComponents(Context context, Glide glide, Registry registry) { registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory()); } }
@Override public void registerComponents(Context context, Glide glide, Registry registry) { registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory()); } }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory()); } }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { //Glide 默认使用 HttpURLConnection 做网络请求,在这切换成 Okhttp 请求 AppComponent appComponent = ArmsUtils.obtainAppComponentFromContext(context); registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(appComponent.okHttpClient())); }
@Override public void registerComponents(Context context, Glide glide, Registry registry) { BaseApplication application = (BaseApplication) context.getApplicationContext(); //Glide 底层默认使用 HttpConnection 进行网络请求,这里替换为 Okhttp 后才能使用本框架,进行 Glide 的加载进度监听 registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(application.getOkHttpClient())); }
public static void init(Glide glide, OkHttpClient okHttpClient) { OkHttpClient.Builder builder; if (okHttpClient != null) { builder = okHttpClient.newBuilder(); } else { builder = new OkHttpClient.Builder(); } builder.addNetworkInterceptor(createInterceptor(new DispatchingProgressListener())); glide.getRegistry().replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(builder.build())); }
private static <X, Y> void registerMockModelLoader(Class<X> modelClass, Class<Y> dataClass, Y loadedData, Registry registry) { DataFetcher<Y> mockStreamFetcher = mock(DataFetcher.class); when(mockStreamFetcher.getDataClass()).thenReturn(dataClass); try { doAnswer(new Util.CallDataReady<>(loadedData)) .when(mockStreamFetcher) .loadData(isA(Priority.class), isA(DataFetcher.DataCallback.class)); } catch (Exception e) { throw new RuntimeException(e); } ModelLoader<X, Y> mockUrlLoader = mock(ModelLoader.class); when(mockUrlLoader.buildLoadData(isA(modelClass), anyInt(), anyInt(), isA(Options.class))) .thenReturn(new ModelLoader.LoadData<>(mock(Key.class), mockStreamFetcher)); when(mockUrlLoader.handles(isA(modelClass))).thenReturn(true); ModelLoaderFactory<X, Y> mockUrlLoaderFactory = mock(ModelLoaderFactory.class); when(mockUrlLoaderFactory.build(isA(MultiModelLoaderFactory.class))) .thenReturn(mockUrlLoader); registry.replace(modelClass, dataClass, mockUrlLoaderFactory); }
@SuppressWarnings("unchecked") public static <ModelT, DataT> void mock(final ModelT model, final DataT data) { Context context = InstrumentationRegistry.getTargetContext(); Glide.get(context) .getRegistry() .replace( (Class<ModelT>) model.getClass(), (Class<DataT>) data.getClass(), new ModelLoaderFactory<ModelT, DataT>() { @NonNull @Override public ModelLoader<ModelT, DataT> build( @NonNull MultiModelLoaderFactory multiFactory) { return new MockModelLoader<>(model, data); } @Override public void teardown() { // Do nothing. } }); }
public static synchronized <T> WaitModel<T> waitOn(T model) { @SuppressWarnings("unchecked") ModelLoaderFactory<WaitModel<T>, InputStream> streamFactory = new Factory<>((Class<T>) model.getClass(), InputStream.class); Glide.get(InstrumentationRegistry.getTargetContext()) .getRegistry() .replace(WaitModel.class, InputStream.class, streamFactory); return new WaitModel<>(model); }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry); registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(ProgressManager.getOkHttpClient())); } }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry); // 添加拦截器到 Glide OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.addInterceptor(new ProgressInterceptor()); OkHttpClient okHttpClient = builder.build(); registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(okHttpClient)); } }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { //Glide 默认使用 HttpURLConnection 做网络请求,在这切换成 Okhttp 请求 AppComponent appComponent = ArtUtils.obtainAppComponentFromContext(context); registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(appComponent.okHttpClient())); }
@Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry); HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null); OkHttpClient mHttpClient = new OkHttpClient().newBuilder() .sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager) .build(); registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(mHttpClient)); } }
@Override public final void registerComponents( @NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { final File cacheDir = CacheHelper.getAvatarsCacheDir(context); OkHttpClient client = NetworkingHelper.createNetworkClient() .addNetworkInterceptor(chain -> { Response originalResponse = chain.proceed(chain.request()); return CacheHelper.addCacheControl(originalResponse.newBuilder()).build(); }) .addInterceptor(chain -> { Response response = chain.proceed(chain.request()); // Skip Gravatars identicons. They are ugly. String url = response.request().url().toString(); String contentDisposition = response.header("Content-Disposition"); if (isGravatarIdenticonUrl(url) && TextUtils.isEmpty(contentDisposition)) { // Gravatars identicons doesn't have an inline content disposition response.close(); return response.newBuilder().code(404).build(); } return response; }) .cache(new Cache(cacheDir, CacheHelper.MAX_DISK_CACHE)) .build(); OkHttpUrlLoader.Factory okhttp3 = new OkHttpUrlLoader.Factory(client); glide.getRegistry().replace(GlideUrl.class, InputStream.class, okhttp3); }
/** OkHttp 是一个底层网络库(相较于 Cronet 或 Volley 而言),尽管它也包含了 SPDY 的支持。 OkHttp 与 Glide 一起使用可以提供可靠的性能,并且在加载图片时通常比 Volley 产生的垃圾要少。 对于那些想要使用比 Android 提供的 HttpUrlConnection 更 nice 的 API, 或者想确保网络层代码不依赖于 app 安装的设备上 Android OS 版本的应用,OkHttp 是一个合理的选择。 如果你已经在 app 中某个地方使用了 OkHttp ,这也是选择继续为 Glide 使用 OkHttp 的一个很好的理由,就像选择其他网络库一样。 添加 OkHttp 集成库的 Gradle 依赖将使 Glide 自动开始使用 OkHttp 来加载所有来自 http 和 https URL 的图片 * @param context * @param glide * @param registry */ @Override public void registerComponents(Context context, Glide glide, Registry registry) { super.registerComponents(context, glide, registry); registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(ProgressManager.getOkHttpClient())); }
@Override public void registerComponents(Context context, Glide glide, Registry registry) { OkHttpClient client = getHttpClient(); client.networkInterceptors().add(createInterceptor(new DispatchingProgressListener())); registry.replace(GlideUrl.class, InputStream.class, new MyOkHttpUrlLoader.Factory(client)); }