我正在构建一个应用程序,将url和json存储在本地sqlite数据库中,然后安排一个jobservice。
在jobservice中,我从db中逐个取出所有请求并执行它们。一旦它们被执行,我只在jobservice中得到响应。现在我真正的问题是如何将响应从服务发送回用户。
我考虑在活动中实现回调/侦听器,并在服务中传递listener对象中的值。但我正在处理sqlite数据库的请求。因此,我不知道如何将回调实例或上下文保存在数据库中,以便在服务本身的其余数据中获得回调实例或上下文。
有什么想法吗?
最佳答案
一种方法是使用事件总线实现:LocalBroadcastManager
,greenrobot的事件总线,一些基于rx的总线,甚至一个简单的MutableLiveData
单例。让服务人员在公共汽车上留言。让您的ui层在总线上注册和注销。让ui层处理总线上接收到的消息,如果ui层不接收消息,则让服务引发Notification
。
以下是使用的示例实现:LocalBroadcastManager
:https://github.com/commonsguy/cw-omnibus/tree/v8.6/EventBus/LocalBroadcastManager
绿色机器人的事件总线:https://github.com/commonsguy/cw-omnibus/tree/v8.6/EventBus/GreenRobot3MutableLiveData
:https://github.com/commonsguy/cw-androidarch/tree/v0.1/General/LiveBus