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

问题描述 投票:0回答:1

我正在创建这样的线程上的改进问题:

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();

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

感谢任何帮助!

java android retrofit2 progressdialog request-cancelling
1个回答
0
投票

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

cancel()

并像这样使用它

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

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

异步发送请求,并将其响应通知给回调,或者在与服务器进行通信,创建请求或处理响应时发生错误。

您不需要使用enqueue(Callback<T> callback)来处理它。

© www.soinside.com 2019 - 2024. All rights reserved.