是否值得执行以在活动之间传递数据?

是否值得执行以在活动之间传递数据?

问题描述:

我想改善我的应用程序的性能。我想到的一件事是用parcelable替换所有可序列化的intent-bundle参数。是否值得执行以在活动之间传递数据?

我发现这个线程:Benefit of using Parcelable instead of serializing object

还有人指出,从一本书,那parcelable只是为了用于进程间通信?这可能不是最新的,对吧?因为从技术上讲,至少是可能的。

再有就是还声明parcelable是不可靠的,因为实现不同防空火炮装置,这将是当然一个杀的特点,因为我想它总是工作,所有的设备和API,从原料药的起始7.

我还阅读了关于使用Externalizable或实现自定义协议的一些建议......但我不明白,为什么Parcelable不可靠,为什么Android开发人员围绕一些无法在所有设备上工作的问题做这样的讨论?或者评论不正确?

是否值得实施Parcelable?我坚持使用Serializable吗?或者是一个自定义序列化/ Externalizable的正确方法?

请不要告诉我“只是尝试”,我没有时间讨论这个,特别是检查是否Parcelable是可靠的(也没有足够的设备)......经验是问...

谢谢。

P.S.也不要说我“大多数情况下可以接受的序列化”我知道,它确实可以接受,但我有时间并希望将它与Parcelable(或其他)一起使用,如果这可以改善用户体验。

Parcelable始终在所有设备上始终工作。如果没有,没有什么会工作。 Android内部非常依赖Parcelable

Parcelable会多一点效率比Serializable但我严重怀疑,这会对你的“用户体验”太大的影响(当然,除非你正在使用它所有的地方和序列化非常大的,复杂的)。

如果您认为自己有性能问题,那么我会花时间分析应用程序并收集关于花费时间的经验数据。恕我直言,将Serializable替换为Parcelable是一种相对较低级的实现优化,可能会使您的性能接近于零,并且可以感知到性能提升。

+0

目前我并没有性能问题,我只是想,参数传递更快会使画面切换更快,使得应用程序感觉更轻,更快。快速和敏感是我认为对于用户体验非常重要的事情。 – Ixx 2012-08-17 21:30:54

+0

我不是传递大量的数据,但也没几元...我路过之类的用户对象(1),有很多个人资料,或帐户,这样的事情的。 – Ixx 2012-08-17 21:36:56

有人从书中说明,parcelable只能用于进程间通信吗?这可能不是最新的,对吧?因为从技术上讲,至少是可能的。

如果Parcelable并不意味着活动之间传递,为什么因为API等级1的putExtra (String name, Parcelable value)意向方法存在?

然后还有就是,由于实施不同翻过设备parcelable是不可靠的说法,这将是当然一个杀的特点,因为我想它总是工作,所有的设备和API,由API 7起。

让我的报价Parcel文档:

包裹是不是一个通用的序列化机制。这个类(和用于放置任意对象成包裹相应Parcelable API)被设计成一个高性能IPC传输。因此,它不适合放置任何包裹数据中持久性存储:在任何的包裹数据的底层实现的改变可以使较旧的数据无法读取。

在这里,我只能阅读关于不将Parcel数据存储到持久性存储中的建议。 从我的个人经验来看,Parcelable从来不是在活动之间传递数据的问题。我大量使用它并支持当前API的API 8。

关于性能和速度它确定使用Parcelable更好,因为它是Android专用的高性能IPC传输序列化机制。虽然,为了实际看到改进,它应该取决于你使用它的程度。

+0

嗯,我也看到了,它可能通过它,甚至已经测试过,但得到了由该线程困惑 - >“也就是说,Parcelable并不意味着要传递给一个活动如果要启动。活动并传递一些数据,使用一个包。Parcelable只能用作AIDL定义的一部分。“其他职位说这是不可靠的。 – Ixx 2012-08-17 21:25:21

+0

Bundle还提供了一个putParcelable()方法。顺便说一下,Intents和Bundles是一种IPC(进程间通信)机制,因此使用它们适合Parcelable的设计方式。 – 2012-08-17 23:33:59

+0

是的,我知道,但你知道,它混淆了26票(100奖金),一个公认的答案说:“Parcelable并不意味着要传递给活动”。正如我所说的,我已经尝试过这一点,它的工作原理,但这个线程让我怀疑。 – Ixx 2012-08-18 11:38:54