Android:为何选择Parcel?

时间:2015-08-21 07:33:42

标签: android parcelable parcel

我是一名C / C ++人,我对Java和Android都很陌生。 所以我在Activity“A”中创建了一个类实例,我试图将这个实例用于Activity“B”。在C / C ++中,您只需传递实例的地址(指针)。 现在我了解到使用Android我应该使用Parcel,但是我不明白这个想法:为什么我想要做所有那些parceling / deparceling过程,而我想做的就是传递一个指针? 请赐教!

3 个答案:

答案 0 :(得分:3)

这与Android活动模型有关。

由于您的应用程序可能会被系统杀死以恢复RAM(这应该只在它处于后台时发生,除非系统处于真的不好的情况下),对象引用才刚刚赢得'做。一旦你的过程消失,它就完全没用了。

活动管理器保存用于启动活动的意图,以便在用户导航回活动时可以使用它重新创建活动。这就是为什么你的意图中的所有数据都必须被分割的原因。

请记住,这意味着您的两个活动将有两个相似的实例 - 但自然地,它们不会是同一个对象,因此对一个的更改不会反映在另一个中。

答案 1 :(得分:0)

Parcel或parcalable是一种在Android中序列化对象的高效和替代方法。它是Java Core中Serialization的替代品。 Java Serialization API允许我们将Object转换为可以通过网络发送的流,或者将其保存为文件或存储在DB中以供以后使用。 它是一种在发送者和接收者之间交换对象的方法(Class)。接收器比反序列化此对象。 在Android中,parcel用于通过使用Intents在不同活动之间交换对象。

答案 2 :(得分:-1)

java不像c / c ++那样工作,你不直接使用内存。如果要将对象从A传递给B,则必须在Bundle中设置它,并将该包添加到intent中。如果它是一个自定义类,我们称之为C,C应该实现parcellable。 Java按值工作,而不是按引用工作。

custom parcelable objects

how do i pass data between activities?