微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Retrofit2调用的onResponse中,requireView返回IllegalStateException

如何解决在Retrofit2调用的onResponse中,requireView返回IllegalStateException

有时,Retrofit2调用的onResponse()方法中的requireView()返回IllegalStateException。当用户离开片段时,我取消了onPause()中的调用

是因为repository.insert(item);花费了一段时间,并且用户离开了onResponse()requireView()开头之间的片段?还是mCall.cancel();不起作用?还是还有其他问题?

谢谢。

简化代码

GetDataService service = RetrofitClientInstance.getRetrofitInstance().create(GetDataService.class);
mCall = service.getItem();
mCall.enqueue(new Callback<Item>() {
    @Override
    public void onResponse(@NonNull Call<Item> call,@NonNull Response<Item> response) {
        Item item = response.body();
        if (item != null) {
            repository.insert(item); // insert into Room db
            SearchFragmentDirections.SearchToItemAction action = SearchFragmentDirections.searchToItemAction(item.getID());

            Navigation.findNavController(requireView()).navigate(action); // here it crashes
        }
    }

    @Override
    public void onFailure(@NonNull Call<Item> call,@NonNull Throwable t) {
        ...
    }
});
@Override
public void onPause() {
    super.onPause();
    if (mCall != null) {
        mCall.cancel();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。