如果用户在 REST(或任何其他长时间运行的异步操作)期间更改设备的方向,则片段将从活动中分离。
因此,如果此片段getActivity()
在处理 REST 响应的代码中的任何位置使用,它将引发空指针。
我可以使用空检查来保护所有的调用getActivity()
——但仍然有可能活动在检查行和使用行之间变为空。而且还有很多地方是这样做的,所以代码会变得一团糟。
如果我想在方向更改时更改布局,则 setRetainInstance(true) 不可用。+ 还有一些奇怪的效果,例如:多个片段、setRetainInstance(true) 和屏幕旋转
所以这让我想到,在片段中处理休息调用可能是一种不好的做法?
我见过一些实践,其中活动包含一个非可视片段来处理响应。但我想我不能把它放在碎片中。所以我必须使用活动作为中介并将结果到达当前片段?
我只是想,将所有内容都放在片段中更清洁。因为我不需要在其他地方修改代码。然后它是一个独立的实体,我可以毫无问题地将它放在其他地方。但是我该如何处理这些对上下文的不可靠引用呢?我的意思是如果片段被重新创建,我真的不关心分离的片段 - 它只需要默默地完成它正在做的任何事情,并且不要干扰我的新工作流程有异常。当然,我不想将所有内容都包含在内,try catch(Exception)
因为我关心在其他情况下引发的异常。