android - 改造是否对被破坏的片段提出请求?
问题描述
我使用改造,我有 2 个片段(片段 A,片段 B)。在每个片段中,我有 2 个请求(对于片段 A,请求让我们调用请求 A1、requestA2)。所以我打开我的应用程序并打开片段 A。在此之后异步启动请求 A1 和请求 A2。所以在此之后,我将打开 Fragment B 并且也有请求。(请求 B1 和 B2)。但是如果我打开 Fragment B 并快速单击返回按钮返回 Fragment A,请求 B1 和 B2 会继续异步工作吗?或者改造会自动取消对fragment destroy 的请求?所以我需要在后台写这样的东西吗?
if(call != null) {
call.cancel();
}
解决方案
据我所知,改造不会这样做,您必须首先在两个片段中将调用创建为全局变量,并在您认为不再需要该调用或您想取消并续订该调用的每个地方取消调用。
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
}
}
推荐阅读
- python - Python 中 else 语句的语法
- amadeus - Amadeus API - 在 LIVE 模式下使用“origin”的“Flight Inspiration Search”API 出现问题
- python - CDK elbv2.ApplicationLoadBalancer.add_security_group 不起作用
- ios - didFinishPickingMediaWithInfo 没有在 Xcode 12 中调用
- jsp - Displaytag 的 ExcelView 甚至可以工作吗?获取纯字符串的非 Excel 输出
- javascript - Ajax 请求中未定义变量
- reactjs - 如何使用 axios 和回调从外部文件调用 api 并在反应中传递参数
- fullcalendar - FullLCalendar 5:每个事件源的不同颜色不会显示在月视图中
- javascript - 将获取的数据推送到对象数组
- angularjs - 如何在freemarker宏中使用角度值?