RecyclerView适配器中的静态和非静态视图之间有什么区别?
这种方法的优点是什么(在我的类中使用静态嵌套类MyAdapter扩展了RecyclerView.Adapter):
static class MyVH extends RecyclerView.ViewHolder {...}
而这个方法(使用成员内部类):
class MyVH extends RecyclerView.ViewHolder {...}
或者它不影响性能,两种方法都可以使用?
这是一个比Android问题更多的java问题。 build议使用静态内部类来避免内存泄漏,如果你将他们的实例带出课堂。 你可以看看这个真棒post,解释内部类的内存泄漏。
基本上nyx说:
- 如果将视图声明为静态,则可以在其他适配器中重用该视图。 无论如何,我不build议这样做,创build一个新的分离的类,并从多个地方使用它,这是更有意义的。 一个一个目的。
- 在视图持有者的情况下,这些类将只在适配器内部使用,它们的实例不应该按照定义去片段或活动或其他地方。 这意味着在视图持有者的情况下具有静态的还是非静态的是相同的。
回答你的performance问题,你可以看看这个答案。 静态的会比另一个占用更less的内存,但是我们再次谈到回收器会回收实例,所以内存的影响不是问题。
通过使用静态,这意味着您可以在其他适配器中重新使用MyVh
。 如果你确实知道你只需要在一个适配器中使用MyVh
,那么你应该使它成为非静态的。
如果在其他适配器中需要它,甚至可以将它完全作为一个单独的类来创build,而不是嵌套类。
静态与非静态应该不会影响性能!