java - 如何从相关线程外部取消改造调用?

标签 java android retrofit2 progressdialog request-cancelling

我正在创建这样一个线程内的改造问题:

new Thread(new Runnable() {
                @Override
                public void run() {
                    mService.uploadFile(body)
                            .enqueue(new Callback<String>() {
                                @Override
                                public void onResponse(final Call<String> call, Response<String> response) {

                                    progressDialog.dismiss();
                                    Toast.makeText(MainActivity.this, "uploaded!", Toast.LENGTH_SHORT).show();

                                }

                                @Override
                                public void onFailure(Call<String> call, Throwable t) {
                                    Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
                                }
                            });
                }
            }).start();

我需要通过 progressDialog.setButton()Thread 外部取消 onResponse 中的调用 。这怎么可能?

感谢任何帮助!

最佳答案

您需要获取 mService.uploadFile(body) 的实例。这是retrofit2.Call<T>与公共(public)方法的接口(interface) cancel()

   ...{
    call = mService.uploadFile(body)
    call.enqueue(new Callback<String>() {
   ...

像这样使用它

  void cancel() {
        if (!call.isCanceled && call.isExecuted) call.cancel()
    }

还有方法 enqueue(Callback<T> callback)

Asynchronously send the request and notify callback of its response or if an error occurred talking to the server, creating the request, or processing the response.

您不需要使用Thread()来处理它。

关于java - 如何从相关线程外部取消改造调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253205/

相关文章:

java - 如何在java控制台应用程序中终止Q press上的while循环

java - 如果两个编辑文本字段不为空,如何更改图像按钮的可绘制性

java - 删除 Jframe 面板

android - 如何为启动画面设计图像?

java - 响应代码 422 转到 onFailure 方法

android - 使用 Observables 时如何忽略 Retrofit 答案?

java - 人脸流不适用于@Named

java - Android 上的性能测量

android - 解析 json,其中字段可以有两种不同类型的 gson 或 jackson

android - Retrofit2 - 406 Not Acceptable