rxJava和改造而不是IntentService + CursorLoader?

时间:2016-02-04 07:23:27

标签: android rx-java intentservice android-cursorloader rx-android

在我的应用程序中,每次进行网络呼叫时都会使用IntentServices。我使用Volley来处理HTTP通信,结果存储在数据库中(使用ContentProvider)。在我的活动/片段中,我使用CursorLoaders来更新我的UI组件。这在设备轮换的情况下非常有用,并且我的所有网络代码都与我的活动/片段分离。

但此时我的应用程序有30个数据库表。我可以预测表的数量只会增加。它感觉很乱,有点太复杂了。

我一直在阅读关于rxJava / rxAndroid和Retrofit的内容,似乎许多开发人员更喜欢rxJava而不是IntentServices + CursorLoaders。我见过的所有rxJava示例都根本不包含IntentServices。是否可以在IntentService中使用rxJava将结果发回给Activity? (我可以预测从API返回的一些结果需要存储在数据库中)

如果我不使用IntentService,我应该如何处理设备轮换?

1 个答案:

答案 0 :(得分:2)

  

是否可以在发布帖子的IntentService中使用rxJava   结果回到活动?

您可以使用标准Android组件BroadcastReceiverLocalBroadcastManagerEventBus

另一种方法,假设活动中显示的数据是从数据库加载的:

使用SQLBriteSQLiteDatabase周围的Rx包装器来加载活动中的数据。这与CursorLoader类似。当数据库中的数据发生变化时,它将重新加载数据。

IntentService下载数据并将其插入数据库(使用SQLBrite)。将通知SQLBrite,它将重新加载活动中的数据。