繁体   English   中英

从IntentService传递数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM