我正在创建这样的线程上的改进问题:
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();
我需要通过call
从onResponse
外部取消Thread
中的progressDialog.setButton()
。这怎么可能?
感谢任何帮助!
您需要获取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)
来处理它。