luojilab / DDComponentForAndroid

一套完整有效的android组件化方案,支持组件的组件完全隔离、单独调试、集成调试、组件交互、UI跳转、动态加载卸载等功能
MIT License
3.34k stars 570 forks source link

Route如果因为内存不足被销毁了怎么办 #100

Open xudjx opened 6 years ago

xudjx commented 6 years ago

你好,Route是一个单例,里面注册了大量的组件和接口信息,如果因为内存不足被系统销毁了,就会造成整个app奔溃,这个问题你们考虑过吗?

Weightang commented 6 years ago

应该不会吧,都在引用的话,那怎么销毁?

xudjx commented 6 years ago

比如app进入了后台,系统把APP的UI和Router这样的大对象给销毁了,但是APP的Application实例还保留。这个时候重新打开App就会有问题了,因为不会再registerComponent了

Weightang commented 6 years ago

https://www.jianshu.com/p/1946bd4f3bb5

这个看看,应该重新走下流程

xiaojinzi123 commented 5 years ago

比如app进入了后台,系统把APP的UI和Router这样的大对象给销毁了,但是APP的Application实例还保留。这个时候重新打开App就会有问题了,因为不会再registerComponent了

首先我可以认为你没有完全了解 Android, Router 中的静态的表如何都被销毁了,那么就代表着你的 Application 已经销毁,当再次回来的时候,其实是会初始化 Application 的,不存在什么 Application 没有销毁了,其他静态变量被回收了,如果是这样子的话,那些百度地图等第三方的用 Application 初始化的是不是也会出现类似的问题呢?回收Activity是有的,但是回收 Application 的话其实就已经是整个 App 退出了,再次进来会初始化 Application 的,所以这个问题不用担心 所以你只要把初始化的代码放在 Application 中,肯定不会出现 Router 被回收造成崩溃的问题