【发布时间】:2019-10-09 18:18:05
【问题描述】:
enter image description here我想在android中使用mvp模式取消模型实现中的请求 我正在使用retrofit2。在这种方法中,我发送了文件路径和状态来检查它,因为按钮操作在同一功能中进行(上传,取消)。
this snipet of class
{公共类 ModelImpl 实现 UploadInterface.Interactor、ProgressRequestBody.UploadCallbacks {enter image description here //另一种方式我们可以在这里使用改造调用来上传文件和 //在模型接口内部的OnFinishedListener接口中返回结果 //我们使用here服务上传到后台运行 // 这样我们可以取消请求并重试 //但是在服务中使用意图服务很难停止,因为它旨在 //运行长任务并通过调用者自行停止。
private OnProgressListener listener;
public ModelImpl(OnProgressListener listener) {
this.listener = listener;
}
@Override
public void uploadImage(String status, String filePath, OnFinishedListener onFinishedListener) {
// call servce to start upload throw service
/*Intent mIntent = new Intent(context, FileUploadService.class);
mIntent.putExtra("mFilePath", filePath);
FileUploadService.enqueueWork(context, mIntent);*/
// starting http service upload
if (!filePath.isEmpty()) {
File file = new File(filePath.trim());
ProgressRequestBody fileBody = new ProgressRequestBody(file, "image", this);
MultipartBody.Part filePart = MultipartBody.Part.createFormData("fileUpload", file.getName(), fileBody);
RestApiService apiService = RetrofitInstance.getApiService();
Call<PojoResponse> callUpload = apiService.onFileUpload2(filePart);
if (status.equals("upload")) {
callUpload.enqueue(new Callback<PojoResponse>() {
@Override
public void onResponse(Call<PojoResponse> call, Response<PojoResponse> response) {
Log.d("ResponseData", "" + response.body().getUrl());
onFinishedListener.onFinished(response.body());
}
@Override
public void onFailure(Call<PojoResponse> call, Throwable t) {
if (call != null && !call.isCanceled()) {
// Call is not cancelled, Handle network failure
onFinishedListener.onFailure(call, t);
} else if (call != null && call.isCanceled()) {
// Call is CANCELLED. IGNORE THIS SINCE IT WAS CANCELLED.
onFinishedListener.onFailure(call, t);
}
//onFinishedListener.onFailure(call, t);
}
});
} else {
if (callUpload != null && callUpload.isExecuted()) {
callUpload.cancel();
}
}
}
}
}
【问题讨论】:
-
您应该多描述一下您尝试做的事情,以及您的实施中的错误或缺失
-
@Luca Stucchi 我更新它