gpt4 book ai didi

android - 使用 Glide 和 okhttp3 在 Stetho 中进行网络检查

转载 作者:太空狗 更新时间:2023-10-29 16:13:31 25 4
gpt4 key购买 nike

如何结合Glide和Stetho使用okhttp3调试图片加载系统

我做了以下

1.添加依赖

//stetho
compile 'com.facebook.stetho:stetho:1.3.1'
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
//glide
compile 'com.github.bumptech.glide:glide:3.7.0'
// Glide's OkHttp3 Integration
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
//okhttp3
compile 'com.squareup.okhttp3:okhttp:3.2.0'

1.添加初始化

public class MyApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
}
}

3.添加glide配置以使用okhttp3

/**
* Created by Arnaud Camus Copied by MOMANI on 2016/04/15.
* http://arnaud-camus.fr/combining-glide-and-stetho-to-easily-debug-your-image-loading-system/
*/
public class StethoOkHttpGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) { }

@Override
public void registerComponents(Context context, Glide glide) {
okhttp3.OkHttpClient client = new okhttp3.OkHttpClient();
client.networkInterceptors().add(new com.facebook.stetho.okhttp3.StethoInterceptor());
glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client));
}
}

4.在AndroidManifest.xml中添加了GlideModule元数据标签

<application 
android:name=".....">
.....
<meta-data android:name="android.alcode.com.material.utils.glide.StethoOkHttpGlideModule"
android:value="GlideModule" />
</application>

5.滑动加载图片行

Glide.with(((ViewHolderSmall) holder).imageView.getContext())
.load(post.getImageUrl())
// .diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(((ViewHolderSmall) holder).imageView);

当我打开 chrome 开发者工具时,Resources Tab 工作正常,但 network tab 没有!!!

为什么?我的错误在哪里?是否建议将 okhttp3 与 Glide 一起使用?以及如何在不使用 okhttp3 的情况下连接它

任何重复或链接都会有帮助

最佳答案

Re: is it recommended to use okhttp3 with Glide?

是的,这就是 OkHttp 集成的方式。

Re: why? where is my mistake?

这可能是需要的,因为内置的 GlideModule 可能会覆盖您拦截的客户端(在 GlideModule 执行之间没有定义的顺序)。考虑来自 wiki 的以下内容:

When overriding default behaviour make sure your custom GlideModule is registered in the manifest and the default one is excluded. Exclusion may mean removing the corresponding metadata from the manifest or using the jar dependency instead of the aar one. -- Overriding default behaviour - Glide Wiki

基于 Conflicting GlideModules - Glide Wiki : 从 okhttp3-integration 依赖中移除 @aar,或者添加到 list 中:

<meta-data android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule" tools:node=”remove” />

还要确保您没有被缓存所愚弄:.diskCacheStrategy(NONE).skipMemoryCache(true);您可以在看到请求后立即将其删除。


OkHttp3 改变了 API client.networkInterceptors() 不再是可写的:

okhttp3.OkHttpClient client = new okhttp3.OkHttpClient.Builder()
.addNetworkInterceptor(new com.facebook.stetho.okhttp3.StethoInterceptor())
.build();

关于android - 使用 Glide 和 okhttp3 在 Stetho 中进行网络检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36642052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com