在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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...