我想问一件事。例如,我使用改造,我有2个片段(片段A,片段B),在每个片段中我都有2个请求(对于片段A,该请求称为请求A1,requestA2)。因此,我打开了我的应用程序并打开了片段A。在此之后,异步启动请求A1和请求A2。因此,在此之后,我将打开Fragment B,并继续进行请求。 (请求B1和B2)。但是,如果我打开片段B并快速单击“后退”按钮以返回片段A,请求B1和B2是否会继续异步工作?还是改装会自动取消碎片销毁的请求?所以我需要在背面印刷机上写这样的东西吗?
if(call != null) {
call.cancel();
}
谢谢。
答案 0 :(得分:2)
据我所知,改造不执行该操作,您必须首先在两个片段中将调用创建为全局变量,然后在您认为不再需要该调用或要取消和续订该调用的所有位置取消该调用。
private Call<Response> mCall;
//...onCreateView() and other codes
@Override
public void onDestroyView() {
if(mCall!= null && mCall.isExecuted()) {
mCall.cancel();
}
}
并在翻新的onFailure()
中进行检查,以防止发生一些对我而言的错误
@Override
public void onFailure(@NonNull Call<T> call, @NonNull Throwable t) {
if (call.isCanceled()) {
//do nothing
}else {
//show some thing to user ui
}
}