我一直在寻找对此的解释,但找不到。
我在一次工作面试中被问到为什么 Android 不允许通过意图传递任何类型。
我很清楚可能性 - 序列化、实现“Parcelable”接口、捆绑等。
我想了解拒绝有意传递自定义类型/对象的决定背后的基本原理。我被引导明白这是出于安全原因,但我发现了这些原因。
第一个原因很简单,因为意图的接收者几乎总是处于不同的进程中,这意味着不同的 jvm。
因为进程和应用程序是沙箱(意味着它们不允许看到彼此的内存),所以您需要通过序列化发送对象的描述(在android中最常见的是parcelables),而不是发送对象实例(即:指向内存在哪里)。
正如 Kuffs 所说,另一个原因是意图可以在您要发送的对象的生命周期内继续存在(特别是对于待处理的意图)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)