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