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

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()。这怎么可能?

感谢您的帮助!

最佳答案

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

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


像这样使用

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


也是metohd enqueue(Callback<T> callback)


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


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

08-18 13:46
查看更多