【问题标题】:Can multiple calls to setupWithViewPager lead to memory leaks?多次调用 setupWithViewPager 会导致内存泄漏吗?
【发布时间】:2015-06-14 19:46:31
【问题描述】:

我希望使用 Firebase 查询填充 TabLayout(来自设计库)。

我已经设置了一个(状态)寻呼机适配器,它可以正确处理动态添加和删除页面(Firebase 回调onChild{Added,Removed}())。 不回收,但可以。

选项卡布局使用setupWithViewPager() 桥接到寻呼机适配器。当已经填充了不可变的寻呼机适配器时,此调用可以正常工作。

但是,当实时使用寻呼机适配器(Firebase 查询)时,它不会将其修改传播到选项卡布局,除非我每次调用 notifyDataSetChanged() 时都调用 setupWithViewPager()

因此我的问题是,多次调用 setupWithViewPager 会导致内存泄漏吗?

令人惊讶的是,无法撤消之前对setupWithViewPager() 的调用(不允许setupWithViewPager(null))。

感谢您的任何见解。

【问题讨论】:

  • 如果您发布一些您怀疑存在内存泄漏的代码的重要部分可能会更好。
  • myTabLayout.setupWithViewPager(myPagerAdapter); myTabLayout.setupWithViewPager(myPagerAdapter); 例如...

标签: android-design-library


【解决方案1】:

您可以尝试在onDestroy 或任何发布它的好时机,例如:

viewPager.clearOnPageChangeListeners()

然后它不会保存对setupWithViewPager 添加的侦听器的引用,因此您可以多次调用它而不会发生内存泄漏。

你怎么看?

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 2021-09-25
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2011-06-16
    • 2011-10-28
    相关资源
    最近更新 更多