如何解决在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 举报,一经查实,本站将立刻删除。