我们有一个网络客户端应用程序,我们正在尝试验证我们处理来自服务器的响应以及设备轮换的方法。基本上,我们这样做,
我们(感知到的)问题是当设备旋转时,活动被破坏/重新创建。在onPause()
中未注册活动的接收者与onResume()
中重新注册活动的接收者之间的时间内,我们可能已经错过了该服务广播的意图。
这是一个真正的问题吗?
如果是这样,我们假设了以下解决方案,
take()
的线程
take()
的线程
offer()
在想要启动网络操作时进入请求队列offer()
到响应队列任何建议表示赞赏,谢谢。
答案 0 :(得分:0)
是的,这种情况可能会在极少数情况下发生,但如果用户接到电话,肯定会发生这种情况。您的活动将暂停,然后重新开始,如果用户长时间谈话,您的活动将从服务中丢失一堆广播。
我的建议是,在服务等组件的响应需要立即关注的情况下,不得使用广播在应用程序之间进行双向通信。您将使用什么机制取决于具体情况。在我的最新项目中,我使用服务来更新app-widget,在这种情况下,我在服务中使用静态代码来执行某些查询或请求某些操作。
你的想法听起来不错,但它可能隐藏了一个复杂的实现。如果我在你的位置,我会考虑使用名为Bound Services的内置服务机制。到目前为止我还没有使用它,但它似乎满足了你的需求。
修改
因此,基于绑定服务概念,我提出以下流程:
希望这会有所帮助......