问题描述
有时,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 (将#修改为@)