【发布时间】:2017-12-31 15:04:59
【问题描述】:
我正在寻找一种将对象数组传递给我的活动/片段的方法。我想到的第一件事是使对象 Parcelable,然后将其作为列表传递到 Intent 中。但是,Parcelable 概念主要设计用于跨流程边界,例如,当您想要启动新活动或发送广播时。这就是为什么还建议在意图中保持较小的事物大小(最好是几 KB),因为每个进程都有自己的私有绑定器事务缓冲区以在操作系统级别使用。
我的第一个问题是,您认为我在上述论点中可能遗漏了一些观点吗?
其次,当我使用 LocalBroadcastManager 发送广播时,intent 中的数据是否仍会下降到操作系统级别以进行编组/解组并传递回进程?如果不是,则传递相对较大的数组可能更有意义,因为它不会代表我的进程占用操作系统内存中的任何共享空间(假设使用 LocalBraodcastManager 时数据不会离开我的应用程序)。
希望清楚!
【问题讨论】:
-
你指的这个巨大的数组是什么?您是否可以不考虑将其存储到数据库中并将其提取到即将到来的活动中,因为您只需要传递一个轻量级密钥。
-
当然可以,但数据资源/提供者不是我的意思。假设您有一个方法 getItems()。一种选择是您可以传递一个侦听器并在数据准备好时调用相关的回调。另一个是 - 如果您不想真正想要依赖任何类型的侦听器接口,或者想要非常异步 - 侦听(广播)事件,在该事件中返回数据是有意图的。跨度>
标签: android android-intent arraylist parcelable