okhttp-OkGo
okhttp-OkGo copied to clipboard
上传文件的时候,progress.request为空
运行了demo以后,进入app,进入OkUpload也没,开始上传文件,文件上传未完成的时候,退出APP,然后再进入APP,进入上传中任务,这个时候会闪退,看代码是UploadAdapter中的下一段代码报错:
`
for (UploadTask<?> task : values) {
//noinspection unchecked
Request<String, ? extends Request> request = (Request<String, ? extends Request>) task.progress.request;
request.converter(new StringConvert());
}`
上面的request为空,我把okgo.db文件拿出来看了,progress.request的数据是保存到数据库里面的,不知道是不是Progress.java里面的这段代码没有把数据库中的数据解析出来:
progress.request = (Request<?, ? extends Request>) IOUtils.toObject(cursor.getBlob(cursor.getColumnIndex(Progress.REQUEST)));
我断点查看了,这个时候request确实为null,有没有大佬帮忙分析一下,为什么request会是空的?
上传过程中,后台干掉app进程,会导致上传中的任务无法正常保存到数据库,再次启动app从数据库中恢复上传任务的时候,task.progress.request就为空了,这个时候request.converter(new StringConvert());就会空指针闪退。
目前我自己做的解决方案是,从数据库中恢复任务的时候,利用extra保存相关数据,然后利用这些数据重新创建request,这样就可以恢复上传了。