Java Android:适配器作为内部类会导致内存泄漏吗?

Java Android:适配器作为内部类会导致内存泄漏吗?,java,android,memory-leaks,android-adapter,Java,Android,Memory Leaks,Android Adapter,作为内部类的非静态适配器会导致内存泄漏吗?代码结构如下 public类XXFragment扩展片段{ //内容视图的数据绑定。 私人签名; @凌驾 公共视图onCreateView(…){ mBinding=数据绑定直到充气(…); mBinding.pager.setAdapter(新的XXAdapter(…); 返回mBinding.getRoot(); } 私有类XXAdapter扩展了RecyclerView.Adapter{…} } 似乎引用将形成一个循环: 片段作为字段保存对其数

作为内部类的非静态
适配器
会导致内存泄漏吗?代码结构如下

public类XXFragment扩展片段{
//内容视图的数据绑定。
私人签名;
@凌驾
公共视图onCreateView(…){
mBinding=数据绑定直到充气(…);
mBinding.pager.setAdapter(新的XXAdapter(…);
返回mBinding.getRoot();
}
私有类XXAdapter扩展了RecyclerView.Adapter{…}
}
似乎引用将形成一个循环:

  • 片段作为
    字段
    保存对其
    数据绑定的引用
  • 数据绑定
    在内部保存对
    回收视图的引用
  • RecyclerView
    内部保存对其
    适配器的引用
  • 适配器
    作为
    片段
    内部类的一个实例,在内部持有对
    片段
    的引用
所以就像
Fragment->DataBinding->RecyclerView->Adapter->Fragment


这是正确的吗?或者Android会自动从一个视图中删除
适配器
,从而打破这个循环吗?

这会使片段的类文件比必须的长,将适配器保留在它自己的文件/类中有什么错?我的意思是-它需要是一个私有类吗?它不是为可重用而设计的,它只被特定的
片段所需要。是的,如果后期开发证明有必要的话,它可以被去掉并变得通用,但问题本身并不是关于这种设计模式或方式。嗯,无论如何,谢谢你,喵喵。啊,事实上,“这会使片段的类文件比必须的长”并不重要。以前的开发人员留下了1500行的
片段和许多10级嵌套/缩进代码。我从没想过要维持这样一个项目<代码>类->内部类->方法->如果->尝试->lambda->lambda->for->如果->lambda
像这样。仅仅因为一个特定的类/片段需要它并不能回答问题
“它需要是一个私有类吗?”
如果它不必是
公共的
受保护的
包专用的
,那么它应该是
专用的
。这样可以减少顾虑,至少可以缩短自动完成列表。Lint也遵循这个规则,对吗?任何不必要的
public
都将受到警告。这将使片段的类文件比必须的长,将适配器保留在它自己的文件/类中有什么错?我的意思是-它需要是一个私有类吗?它不是为可重用而设计的,它只被特定的
片段所需要。是的,如果后期开发证明有必要的话,它可以被去掉并变得通用,但问题本身并不是关于这种设计模式或方式。嗯,无论如何,谢谢你,喵喵。啊,事实上,“这会使片段的类文件比必须的长”并不重要。以前的开发人员留下了1500行的
片段和许多10级嵌套/缩进代码。我从没想过要维持这样一个项目<代码>类->内部类->方法->如果->尝试->lambda->lambda->for->如果->lambda
像这样。仅仅因为一个特定的类/片段需要它并不能回答问题
“它需要是一个私有类吗?”
如果它不必是
公共的
受保护的
包专用的
,那么它应该是
专用的
。这样可以减少顾虑,至少可以缩短自动完成列表。Lint也遵循这个规则,对吗?任何不必要的
public
都将受到警告。