HuolalaTech / hll-wp-therouter-android

A framework for assisting in the renovation of Android componentization(帮助 App 进行组件化改造的动态路由框架)
https://therouter.cn/
Apache License 2.0
1.1k stars 129 forks source link

使用withObject ,Activity 销毁重新创建时,无法二次 inject #114

Closed linqip closed 12 months ago

linqip commented 1 year ago

代码如下 @Autowired(name = "myPackageBean") lateinit var myPackageBean: MyPackageBean private val timesAdapter = TimesAdapter() private val leaveTimesAdapter = TimesAdapter()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityTimesPackagesDetailBinding.inflate(layoutInflater)
    setContentView(binding.root)
    TheRouter.inject(this)

错误日志如下 java.lang.NoSuchMethodException: com.catl.electric.bean.MyPackageBean. [] 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at java.lang.Class.getConstructor0(Class.java:2363) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at java.lang.Class.getDeclaredConstructor(Class.java:2201) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.therouter.inject.RouterInject.createDI(RouterInject.kt:105) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.therouter.inject.RouterInject.get(RouterInject.kt:54) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.therouter.TheRouter.get(TheRouter.kt:169) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.therouter.router.autowired.DefaultServiceParser.parse(DefaultServiceParser.kt:11) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.catl.electric.ui.TimesPackagesDetailActivityTheRouterAutowired.autowiredInject(TimesPackagesDetailActivityTheRouterAutowired.java:21) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at a.TheRouterServiceProvideInjecter.autowiredInject(Unknown Source:55) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.therouter.TheRouter.inject(TheRouter.kt:193) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at com.catl.electric.ui.TimesPackagesDetailActivity.onCreate(TimesPackagesDetailActivity.kt:52) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at android.app.Activity.performCreate(Activity.java:8516) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at android.app.Activity.performCreate(Activity.java:8480) 2023-10-07 11:12:31.967 12554-12554 System.err com.lzkj.catl.exelectricity.android W at android.app.Instrumentation.callActivityOnCreate(Instrument

linqip commented 1 year ago

使用的是 data class

kymjs commented 12 months ago

withObject()原理是作为弱引用放在全局缓存里面,如果被回收弱引用也会被回收,不建议放重要数据,重要数据请在Activity的saveinstancestate方法中自行保存

linqip commented 12 months ago

您的邮件已经收到了,我看到后会第一时间回复的。 谢谢 !