0
  • android的View有一个规则,如果这个view已经添加到其他的ViewGroup里了,必须要脱离关系才可以加入到新的ViewGroup里.


    假设你有这么一个场景,你的这个mUiLoader没有销毁,然后又进了你当前Fragment的声明周期方法,这个UiLoader不是新创建的,之前已经添加到某个ViewGroup里了.如果你再添加的话则会报错.


    所以加了这个代码,用于防御.

    1153952789488054272  评论     打赏       拉大锯
    • I&F  回复 @拉大锯
      谢谢,懂了,那这个FrameLayout.removeAllView()是一样的吗?也是在创建的时候与之前的UILoader脱离关系? 还有一个问题给UILoader添加网络不加时的回调接口为什么没有提供注销的办法,那不会像ViewCallback一样造成内存泄漏吗?是因为Presenter里面是单例设计模式吗,因为setRetryClickListener也是传入了this
      I&F 2020-04-24 19:19   回复 1252047122883153920
    • 拉大锯  回复 @I&F
      那这个FrameLayout.removeAllView()是一样的吗?可以这么干,不推荐这么干。我都一年多没看代码了。你可以第一步实现功能,第二步再去优化。内存泄露的原因就是对象还被使用/引用着,gc无法回收。写代码的时候可以避免,或者后期去分析。
      拉大锯 2020-04-24 19:43   回复 1153952789488054272
    • I&F  回复 @拉大锯
      ok,可能我还没看到,谢谢回答
      I&F 2020-04-26 11:45   回复 1252047122883153920
相关问题
幻影~ · 提问
2024-04-13 20:13 7 2
幻影~ · 找工作
2024-04-07 10:44 12 2
幻影~ · 问题
2024-03-31 17:20 7 2
TONYGFX · AOSP
2024-03-28 17:11 4 2