从 IntentService 传递数据
Passing data from IntentService
我有以下流程:
ActivityA/FragmentA 通过 intents 传递给 ActivityB/FragmentB 一个自定义的有点大的对象。
在对象的属性中有一个 List<CustomObject> items
用户按下 FragmentB 中的一个小部件,然后 FragmentB 开始 ActivityC/FragmentC 传递应该在其 UI 和 中显示详细信息的自定义对象(Parcelable)也开始Service
以获取填充该特定对象的 items
的列表。
当服务从后台 HTTP 调用获取结果时,我需要更新 UI 中预期显示这些已获取项目的列表。
此列表位于 FragmentC 中,其中包含带有 items
null.
的自定义对象的副本
Service
有自定义对象的另一个副本,items
刚刚获取但无法更新片段列表。
制作片段的静态变量并分配 this
,然后在片段中公开 public 方法,Service
可以调用该方法来传递项目,但非常脏。
我想知道什么是 clean/standard 设计?
I am using LocalBroadcastManager but the list is fairly large and I am not sure if passing it via the intent is a good idea
通常我们使用Intent
是为了跨越进程边界,所以Intent
需要转成字节数组(通过Parcel
),这将成为大数据的问题。 LocalBroadcastManager
不会那样做——它只是按原样传递 Intent
对象。
LocalBroadcastManager
的缺点是消息是一个Intent
,因为Intent
通常用于IPC,它对数据类型有限制。出于这个原因,我个人推荐 greenrobot 的 EventBus,甚至 Square 的 Otto,而不是 LocalBroadcastManager
。话虽这么说,如果您可以轻松地将数据放入 Intent
,大小应该不是问题。
我有以下流程:
ActivityA/FragmentA 通过 intents 传递给 ActivityB/FragmentB 一个自定义的有点大的对象。
在对象的属性中有一个 List<CustomObject> items
用户按下 FragmentB 中的一个小部件,然后 FragmentB 开始 ActivityC/FragmentC 传递应该在其 UI 和 中显示详细信息的自定义对象(Parcelable)也开始Service
以获取填充该特定对象的 items
的列表。
当服务从后台 HTTP 调用获取结果时,我需要更新 UI 中预期显示这些已获取项目的列表。
此列表位于 FragmentC 中,其中包含带有 items
null.
的自定义对象的副本
Service
有自定义对象的另一个副本,items
刚刚获取但无法更新片段列表。
制作片段的静态变量并分配 this
,然后在片段中公开 public 方法,Service
可以调用该方法来传递项目,但非常脏。
我想知道什么是 clean/standard 设计?
I am using LocalBroadcastManager but the list is fairly large and I am not sure if passing it via the intent is a good idea
通常我们使用Intent
是为了跨越进程边界,所以Intent
需要转成字节数组(通过Parcel
),这将成为大数据的问题。 LocalBroadcastManager
不会那样做——它只是按原样传递 Intent
对象。
LocalBroadcastManager
的缺点是消息是一个Intent
,因为Intent
通常用于IPC,它对数据类型有限制。出于这个原因,我个人推荐 greenrobot 的 EventBus,甚至 Square 的 Otto,而不是 LocalBroadcastManager
。话虽这么说,如果您可以轻松地将数据放入 Intent
,大小应该不是问题。