我正在创建这样的线程上改造问题:
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()
接口。
...{
call = mService.uploadFile(body)
call.enqueue(new Callback<String>() {
...
像这样使用
void cancel() {
if (!call.isCanceled && call.isExecuted) call.cancel()
}
也是metohd
enqueue(Callback<T> callback)
异步发送请求,并将响应通知给回调函数,或者在与服务器通信,创建请求或处理响应时发生错误。
您不需要使用
Thread()
来处理它。