2

我正在将 Volley 和 Otto 集成到一个项目中以处理所有服务调用,同时考虑改变方向。通过使用 Otto,我可以在方向更改时取消注册和重新注册总线,然后当 Volley 返回响应时,我可以将结果发回活动,这非常有效。但是我相信我有一个尚未处理的差距,也就是说,如果我在暂停时取消注册我的总线,然后在活动仍然被破坏时返回来自 volley 的响应,然后 volley 发布响应,(但没有活动会得到它),然后活动恢复,总线再次重新注册,并且由于广播已经发布,因此不会收到响应。

有没有办法解决这个问题?我的第一个想法是实现类似 Android 粘性广播的工作原理?还有其他更好的想法或想法吗?

4

1 回答 1

3

如果 activityids 匹配,实际的 APIResult 将被发布到总线,以便 Activity 可以正常接收它。如果它不匹配,那么就好像事件根本没有被处理。对于 Otto,这会导致一个包含未处理对象的 DeadEvent。APIService 侦听 DeadEvents 并挂起包含 APIResult 或 APIResult.ActivityProxy 的事件。当 Activity 注册到总线时,APIService 会将所有具有相同 activityid 的 DeadEvents 发布到总线,以便 Activity 可以接收结果。

答案在这里找到。

于 2014-05-03T14:16:56.863 回答