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的逻辑
网友评论