ximsfei / Android-skin-support

Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!
MIT License
6.39k stars 1.08k forks source link

SkinCompatDelegate中的mSkinHelpers貌似有内存泄漏 #476

Open 528787067 opened 1 year ago

528787067 commented 1 year ago

SkinCompatDelegate中的mSkinHelpers使用虚引用持有所有支持换肤的view,虽然view会随着页面关闭自动回收,但是对应被mSkinHelpers 这个列表持有的 WeakReference 对象本身貌似不会被回收,会一直存在 mSkinHelpers 列表中,不断的 onCreateView 貌似会使 mSkinHelpers 列表不断增长。所以这里每次 add 对象到 mSkinHelpers 列表的时候是否需要添加清理掉列表中被回收的对象的逻辑?或者换肤遍历列表的时候清理无用对象?或者调整这里的逻辑,不使用列表来持有可换肤view对象,而是构造view的时候使用 addOnAttachStateChangeListener,在 onViewAttachedToWindow 里面注册换肤监听,onViewDetachedFromWindow 反注册换肤监听?