sensorsdata/sa-sdk-android

AopUtil中关于sLruCache的疑问

Closed this issue · 2 comments

sLruCache会自己创建fragment并存进去,并且会导致此fragment一直被持有,造成fragment的内存泄漏,我大概看了下相关代码,下游一般只用了fragment的class,那么有几个问题:

  1. 生成的fragment是啥作用?
  2. 必须要创建新的fragment么?
  3. 如果必须,生成的fragment能不能在对应的activity销毁的时候也remove掉?

@huxq17

  1. 生成 Fragment 的作用是为了采集 Fragment 场景下的页面标题和内容,这样做的目的就是为了规避每次都去反射,造成耗时太多
  2. 在目前的业务下,采集 Fragment 是必须的,需要获取到触发所在页面、对控件进行标识、页面的整体结构
  3. 这个优化思路可以考虑一下

其实有个方案比较简单,把slrucache放到viewmodel里,这样其他activity的fragment就不会泄露了,或者自己实现用类似的思路。sdk都挺好的,就是这里能做的更好点,希望能尽快处理吧。