在一次开发视频上传的功能时发现小体积的视频能正常上传但稍大的(20M左右)就不行,而且没有任何报错信息。
后发现在上传大体积文件时logcat中不断在打印流内容(就是一堆看不懂的乱码),发现可能是因为okhttp的日志拦截器造成的。
检查okhttp的日志拦截器设置,将setLevel从HttpLoggingInterceptor.Level.BODY改为HttpLoggingInterceptor.Level.HEADERS,再次上传大体积视频就成功了。
原来就是日志拦截器设置为BODY级别时,在上传文件时会把所有信息读到log中,导致内存吃紧不断触发gc(也有可能触发oom),而无法走完拦截器的流程,导致数据无法向服务端发送。
网友评论