alibaba / atlas

A powerful Android Dynamic Component Framework.
Apache License 2.0
8.13k stars 1.48k forks source link

[core] 修复 ExtrasClassLoader 必须为 DelegateClassloader 的问题 #213

Closed huaf22 closed 6 years ago

huaf22 commented 6 years ago

[core] 修复 ExtrasClassLoader 必须为 DelegateClassloader 的问题

hwjump commented 6 years ago

谢谢,pr,但是在某些场景下,ExtrasClassLoader 需要是DelegateClassloader 这是为了更好的隔离,而不是把序列化的对象全部放到公共的地方。

huaf22 commented 6 years ago

@hwjump 我在调试过程中发现如果 activity 跳转时带自定义类做参数的话,不管这两个 activity 是否在同一个 bundle 中,都会走到 DelegateClassLoader 的第340行在所有已经安装的 bundle 中查找,如果改成 ExtrasClassLoader 改为目标 Activity 所在的 BundleClassLoader,就会先查找目标 Activity 所在的 Bundle,如果找不到再去 Framework.systemClassLoader 中查找。

可以解释一下在什么场景下需要设置 ExtrasClassLoader 为 DelegateClassloader ?

hwjump commented 6 years ago

当有人在主dex里设置了一个activitylifecycle。 然后在onCreate回调里,拿Intent。这个时候是需要的。