我已经找到了解释,但找不到。
我在求职面试中被问到为什么Android不允许通过意图传递任何类型。
我很清楚可能性 - 序列化,实施" Parcelable"界面,捆绑等。
我想了解拒绝传递带有intent的自定义类型/对象的决定背后的理由。我被引导理解这是出于安全原因,但我发现了这些原因。
答案 0 :(得分:6)
自定义对象的生命周期有限。它们可以包含在重新启动设备时可能会丢失的变量等。
传递给意图的所有对象都可以无限期地存储,因为它们可以被序列化或展平,并且它们的值保存到需要它们的时间。
答案 1 :(得分:6)
第一个原因仅仅是因为意图的接收者几乎总是处于不同的过程中,这意味着不同的jvm。 因为进程和应用程序是沙箱(意味着它们不允许看到彼此的内存),所以需要通过序列化发送对象的描述(通常是android中的parcelables),而不是发送对象实例(即:指向内存的指针。
另一个原因,正如Kuffs所说的那样,意图可以在你想要发送的对象的生命周期中存活(特别是对于待定的意图)。