alibaba / ARouter

💪 A framework for assisting in the renovation of Android componentization (帮助 Android App 进行组件化改造的路由框架)
Apache License 2.0
14.45k stars 2.61k forks source link

关于不同版本间Autowired inject机制的问题 #898

Open protectedMan opened 3 years ago

protectedMan commented 3 years ago

版本 A : api 'com.alibaba:arouter-api:1.5.0' annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'

版本 B : api 'com.alibaba:arouter-api:1.5.1' annotationProcessor 'com.alibaba:arouter-compiler:1.5.1'

使用 Arouter获取FragmentA,此时不传递param1参数.

版本 A : 不会报错 版本 B : ARouter.getInstance().inject会报空指针的错误

也就是说在版本B中, 如果类中定义了参数, 但是你没有传这个参数, 就会有如下报错: image 从版本A升级到版本B升级建议, ARouter.getInstance().inject 进行trycash捕获崩溃

YuYongzhi commented 3 years ago

1.5.0版本,inject方法已经在 try-catch 中了 image

而1.5.1版本中,仅getSyringe在 try-catch 中,而inject并不在 try-catch 中。 image

所以如果遇到getIntent()getIntent().getExtras()getArguments()为 null 的情况,就会引起空指针异常。 已提交合并处理空指针的合并请求 #903 ,希望官方尽快合并,并发布1.5.2。