[英]Passing data from IntentService
我有以下流程:
ActivityA / FragmentA通过意图将自定义的较大对象传递给ActivityB / FragmentB。
对象的属性中有一个List<CustomObject> items
用户在FragmentB中按下小部件,然后FragmentB启动ActivityC / FragmentC,同时传递应该在其UI中显示详细信息的自定义对象(Parcelable), 并启动Service
以获取填充该特定对象items
的列表。
当Service从后台HTTP调用中获取结果时,我需要更新UI中的列表,该列表有望显示获取的这些项目。 该列表位于FragmentC中,该片段具有自定义对象的副本,其中items
null。
该Service
具有自定义对象和的另一个副本items
只是牵强,但不能更新片段的列表。
使得片段的静态变量和分配this
再曝,该片段的公共方法Service
可以调用通过项目工作,但非常脏。
我想知道什么是干净/标准的设计?
我正在使用LocalBroadcastManager,但是列表很大,我不确定通过意图传递它是否是一个好主意
通常,当我们使用Intent
,它将跨越进程边界,因此必须将Intent
转换为字节数组(借助于Parcel
),这对于大数据来说是个问题。 LocalBroadcastManager
不会这样做-只是按原样传递Intent
对象。
LocalBroadcastManager
的缺点是消息是一个Intent
,并且由于Intent
通常用于IPC,因此它对数据类型有限制。 就我个人LocalBroadcastManager
,出于这个原因,我建议在LocalBroadcastManager上推荐greenrobot的EventBus,甚至Square的Otto。 话虽这么说,如果您很容易将数据放入Intent
,大小就不成问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.