在我的应用程序中,每次进行网络呼叫时都会使用IntentServices。我使用Volley来处理HTTP通信,结果存储在数据库中(使用ContentProvider)。在我的活动/片段中,我使用CursorLoaders来更新我的UI组件。这在设备轮换的情况下非常有用,并且我的所有网络代码都与我的活动/片段分离。
但此时我的应用程序有30个数据库表。我可以预测表的数量只会增加。它感觉很乱,有点太复杂了。
我一直在阅读关于rxJava / rxAndroid和Retrofit的内容,似乎许多开发人员更喜欢rxJava而不是IntentServices + CursorLoaders。我见过的所有rxJava示例都根本不包含IntentServices。是否可以在IntentService中使用rxJava将结果发回给Activity? (我可以预测从API返回的一些结果需要存储在数据库中)
如果我不使用IntentService,我应该如何处理设备轮换?
答案 0 :(得分:2)
是否可以在发布帖子的IntentService中使用rxJava 结果回到活动?
您可以使用标准Android组件BroadcastReceiver,LocalBroadcastManager或EventBus。
另一种方法,假设活动中显示的数据是从数据库加载的:
使用SQLBrite,SQLiteDatabase
周围的Rx包装器来加载活动中的数据。这与CursorLoader
类似。当数据库中的数据发生变化时,它将重新加载数据。
在IntentService
下载数据并将其插入数据库(使用SQLBrite
)。将通知SQLBrite
,它将重新加载活动中的数据。