我正在构建一个应用程序,我将url和Json存储在我的本地SQLite数据库中,然后安排JobService。
在JobService中,我逐个从db中取出所有请求并执行它们。一旦执行它们,我只在JobService中获得响应。现在我真正的问题是如何从服务中将响应发送回用户。
我想过在activity中实现一个回调/监听器,并在服务中的listener对象中传递值。但我正在从SQLite数据库中取出请求。所以我不知道如何在我的数据库中保存回调实例或上下文,以便我可以使用服务本身内的其余数据。
有什么想法吗?
答案 0 :(得分:2)
一种方法是使用事件总线实现:LocalBroadcastManager
,greenrobot的EventBus,一些基于Rx的总线,甚至是简单的MutableLiveData
单例。让服务在总线上发布消息。让UI层在它们来来往往时从总线注册和取消注册。让UI层处理在总线上收到的消息,如果UI层没有接收消息,则让服务引发Notification
。
以下是使用以下示例实现:
LocalBroadcastManager
:https://github.com/commonsguy/cw-omnibus/tree/v8.6/EventBus/LocalBroadcastManager MutableLiveData
:https://github.com/commonsguy/cw-androidarch/tree/v0.1/General/LiveBus