首页 > 解决方案 > 改造是否对被破坏的片段提出请求?

问题描述

我使用改造,我有 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();
}

标签: androidperformanceandroid-fragmentsrequestretrofit

解决方案


据我所知,改造不会这样做,您必须首先在两个片段中将调用创建为全局变量,并在您认为不再需要该调用或您想取消并续订该调用的每个地方取消调用。

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
      }
}

推荐阅读