Android 是否可以通过一个包传递一个对象数组?
我有一个问题与你的问题相似,但略有不同。在最初的问题中,他说 假设您想启动一个新活动,并从中传递一些数据 当前的活动 第一个答案是关于把东西放在额外的位置上,所以他大概是在谈论传递意图 但是,如果您只想在同一活动的两个实例之间传递,该怎么办?例如,如果旋转屏幕,活动的“旧”实例将被销毁,并创建一个“新”实例。在它们之间传递信息的方法是通过一个包。我知道如何使用onSaveInstanceState.putXXX和.getXXX传递基本数据类型。但是如果我有一个对象数组呢?我怎样才能把这些打包传递?可包裹和可序列化是我唯一的选择吗*Android 是否可以通过一个包传递一个对象数组?,android,bundle,Android,Bundle,我有一个问题与你的问题相似,但略有不同。在最初的问题中,他说 假设您想启动一个新活动,并从中传递一些数据 当前的活动 第一个答案是关于把东西放在额外的位置上,所以他大概是在谈论传递意图 但是,如果您只想在同一活动的两个实例之间传递,该怎么办?例如,如果旋转屏幕,活动的“旧”实例将被销毁,并创建一个“新”实例。在它们之间传递信息的方法是通过一个包。我知道如何使用onSaveInstanceState.putXXX和.getXXX传递基本数据类型。但是如果我有一个对象数组呢?我怎样才能把这些打包传递
*假设我不想使用静态变量基本上我们这里有几个选项 选项1是使用方法。在这里,您将所有内容存储到类的实例中。Bundle需要简单的、可打包的或可序列化的类型。您也可以传递数组,但这些数组必须是这些类型的数组 选项2是覆盖并从那里返回数组。此活动的新实例可以通过调用来检索此数组。尽管此选项工作正常,但已被弃用。这就是第三种选择发挥作用的地方 选项3是使用保留片段。这里的想法是创建一个片段,并调用该片段的onCreate()或onCreateView()。一旦被调用,这个片段就会被“保留”。如果旋转设备,则每次旋转都将创建新的活动实例,但保留片段的相同实例将传递给活动的每个新实例。如果您将阵列保留在那里,它将立即在每个新活动实例中可用。这将是一条路要走
我想指出,选项1是持久的。如果你的应用程序进入后台,Android将其杀死,然后再次启动,你将把你的数组交付给onCreate(Bundle savedInstanceState)。与此相反,选项2和3将失去状态。如果您可以在每次创建活动时重新创建阵列,则可以使用选项2或3。“是否可
打包
和可序列化
我的唯一选项?”-简言之:是。但是,由于Parcelable
优于Serializable
(它是专门为高性能IPC创建的),因此在实现开销方面值得付出额外的努力,特别是如果您计划传递数据集的话。选项1最终是最好的。我需要坚持不懈的努力。我意识到只要我的对象实现可序列化
我就可以了