gpt4 book ai didi

android - rxJava 和改造而不是 IntentService + CursorLoader?

转载 作者:太空狗 更新时间:2023-10-29 13:15:27 26 4
gpt4 key购买 nike

在我的应用程序中,我每次进行网络调用时都会使用 IntentServices。我使用 Volley 处理 HTTP 通信,结果存储在数据库中(使用 ContentProvider)。在我的 Activities/Fragments 中,我使用 CursorLoaders 来更新我的 UI 组件。这在设备旋转的情况下非常有效,并且我的所有网络代码都与我的 Activity/fragment 分离。

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

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

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

最佳答案

Is it possible to use rxJava inside an IntentService that posts the result back to an Activity?

您可以使用标准的 Android 组件 BroadcastReceiver , LocalBroadcastManagerEventBus .

另一种方式,假设 Activity 中显示的数据是从数据库加载的:

使用SQLBrite ,一个围绕 SQLiteDatabase 的 Rx 包装器,用于在 Activity 中加载数据。这与 CursorLoader 的工作方式类似。当数据库中的数据发生变化时,它将重新加载数据。

在您的 IntentService 中下载数据并将其插入数据库(使用 SQLBrite)。 SQLBrite 将收到通知并重新加载 Activity 中的数据。

关于android - rxJava 和改造而不是 IntentService + CursorLoader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com