java - 如何从受人尊敬的线程之外取消改造调用?
问题描述
我正在创建这样一个线程上的改造问题:
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();
我需要从外部通过 a取消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()
}
也方法enqueue(Callback<T> callback)
异步发送请求并通知其响应的回调,或者在与服务器交谈、创建请求或处理响应时发生错误。
你不需要Thread()
用它来处理它。
推荐阅读
- javascript - passport-jwt 错误 401(未经授权)我该如何解决?
- python - Python Visual Studio Code 中的“很可能是由于循环导入”
- android - 命令在终端中运行,但不是从 .sh 文件中运行
- python - talib 抽象 API 与 talib
- m2doc - 尝试重做机上娱乐系统 M2DOC 示例时出错
- html - 无论焦点如何,HTML 选择始终具有蓝色背景
- java - 如何在 Java 8 中模拟 LocalDateTime.now()
- c++ - 为什么在代码中使用指向指针的指针?
- hibernate - Hibernate 为 OneToOne 关联生成错误的外键约束?
- c++ - 通过取消引用打印字符指针与打印字符