Android 使用改型2.x运行并行请求

Android 使用改型2.x运行并行请求,android,file-upload,retrofit2,Android,File Upload,Retrofit2,我有一个两个标签的应用程序。选项卡A用于将文件上载到服务器。选项卡B显示来自服务器的一些结果 文件上传改型2界面如下 @Multipart @POST("targetEndpoint") Call<ResponseBody> uploadDocument(@Part("description") RequestBody description, @Part("fileId") RequestBody fileId, @Part MultipartBody.Part file); @

我有一个两个标签的应用程序。选项卡A用于将文件上载到服务器。选项卡B显示来自服务器的一些结果

文件上传改型2界面如下

@Multipart
@POST("targetEndpoint")
Call<ResponseBody> uploadDocument(@Part("description") RequestBody description, @Part("fileId") RequestBody fileId, @Part MultipartBody.Part file);
@Multipart
@POST(“目标端点”)
调用uploadDocument(@Part(“description”)RequestBody description、@Part(“fileId”)RequestBody fileId、@Part MultipartBody.Part file);
而且实现是非常简单的

public void uploadDocument(File fileToUpload, String mediaType, String fileId) throws ServiceUnavailableException {
    //request body from file instance
    RequestBody requestFile = RequestBody.create(MediaType.parse(mediaType), fileToUpload);

    MultipartBody.Part body = MultipartBody.Part.createFormData("FileUpload", fileToUpload.getName(), requestFile);

    RequestBody description = RequestBody.create(MultipartBody.FORM, "File Description");
    RequestBody customerIdBody = RequestBody.create(MediaType.parse("text/plain"), fileId);

    Call<ResponseBody> call = uploadDocument(description, fileIdBody, body);

    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            Log.i(getClass().toString(), "success");
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            Log.i(getClass().toString(), "failed");
            t.printStackTrace();
        }
    });
}
public void uploadDocument(文件fileToUpload、字符串mediaType、字符串fileId)引发ServiceUnavailableException{
//从文件实例请求正文
RequestBody requestFile=RequestBody.create(MediaType.parse(MediaType),fileToUpload);
MultipartBody.Part body=MultipartBody.Part.createFormData(“FileUpload”,fileToUpload.getName(),requestFile);
RequestBody description=RequestBody.create(MultipartBody.FORM,“文件描述”);
RequestBody customerIdBody=RequestBody.create(MediaType.parse(“text/plain”),fileId);
Call Call=上传文档(description,fileIdBody,body);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Log.i(getClass().toString(),“success”);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.i(getClass().toString(),“失败”);
t、 printStackTrace();
}
});
}
文件上传效果很好。但在文件上传过程中,如果我切换到选项卡B,尝试从服务器获取一些数据,则只有上传完成后才会处理这些数据

我知道改造使用执行器来排队请求。我认为这是一个限制,因为来自选项卡B的请求将延迟到文件上传结束

作为替代方案,我可以将上传逻辑移动到一个单独的线程,该线程使用通用HttpUrlConnection将数据推送到服务器


如果我做错了,请纠正我?有没有办法使用改型2同时处理两个请求?

@commonware原来是阻止多个请求的服务器,改为多线程处理程序解决了这个问题!谢谢你的帮助。@commonware原来是阻止多个请求的服务器,改为多线程处理程序解决了这个问题!谢谢你的帮助。