关于第三方库遇到的问题

Glide

  • 图片变绿
    Glide默认加载图片的格式是RGB_565 ,缺少ALPHA通道,导致加载图片变绿
  • Glide在弱网状态下加载大图片,失败几率很大
    下面是上面两个问题的解决方案
public class MyGlideModule implements GlideModule {
@Override
public void registerComponents(Context context, Glide glide) {
    // 设置长时间读取和断线重连
    OkHttpClient client = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.MINUTES).readTimeout(10, TimeUnit.MINUTES).retryOnConnectionFailure(true).build();
    glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client));
}

@Override
public void applyOptions(Context context, GlideBuilder builder) {
    // 防止图片变绿,在有ALPHA通道的情况下
    builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
}

}
  • Glide的OOM
    ImageView设置的ScaleType是fitxy,Glide会默认按照图片实际大小加载
    解决方法:
Glide.with(context).load().centerCrop().into()
Glide.with(context).load().fitCenter().into()

RxJava(1.x)

  • 背压问题
    在升级APP版本的时候,用的RxJava,然后上游发送的流太快导致下载失败
    解决方法:在使用之前使用sample操作符来控制采样率

Retrofit

  • gson 解析不了
    ConverterFactory使用GsonConverterFactory的时候,返回的错误gson解析不了,会报error并且log里面打印不出东西
    解决办法:添加ScalarsConverterFactory.create()用String来接收返回的信息
new Retrofit.Builder().baseUrl(url)
                //增加返回值为String的支持
                .addConverterFactory(ScalarsConverterFactory.create())
                //增加返回值为Gson的支持(以实体类返回)
                .addConverterFactory(GsonConverterFactory.create())
                //增加返回值为Oservable<T>的支持
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();

BlockCanary

利用了Android原生Looper.loop中的一个log打印逻辑,以准确定位ANR和耗时调用栈。

  • dispatchMessage执行的非常久是无法触发BlockCanary的逻辑
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容