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
都将受到警告。