鼓励(或不鼓励)在Android开发中使用内部类吗?

时间:2012-07-12 04:32:46

标签: java android inner-classes

我在一些书中读到,使用内部类会使应用程序更大(每个内部类使用几KB),但是对性能有任何担忧吗?我看到了Google的示例代码中使用的内部类,但总的来说,是否鼓励在Android中使用内部类?

谢谢!

3 个答案:

答案 0 :(得分:3)

1。如果想要在同一个类中实现接口方法超过1次且多于1种方式,内部类非常出色。

2. 匿名类是创建事件处理程序的最佳方式。

第3。使用顶级类(即静态内部类)将很轻,因为它更像是一个外部类,它没有对外部类的任何隐式引用。

<强> 4。非静态内部类将有点开销,因为它包含对外部类的隐式引用。

例如:        对于涉及隐含参考的内部类

例如:

    public class outer{

                int x = 10;


               class inner{

                 int x=5;

                 public void go(){

   System.out.println("Inner x: "+ this.x);           // Prints x in Inner class
   System.out.println("Inner x: "+ Outer.this.x);     // Prints x in Outer class


                }
           }
       }

答案 1 :(得分:2)

内部类,匿名类和常规类之间不应存在任何重要的代码大小差异。至于内部和常规之间的区别,你可以解压缩你的jar并看到为每个jar生成一个普通的.class文件。

所以不要对不必要的事情发誓,但它也不是“不惜一切代价避免”的情况。

答案 2 :(得分:1)

只要你使用静态内部类,你就可以了。静态内部类更适合于方便地安排类并适当地确定它们的范围。

非静态内部类不是这种情况,因为它们包含对包含它们的类的引用。这不仅很重,而且在Android中也很危险,因为持有类是实时的,即附加了Context。这可能会导致内存泄漏,从而可能泄漏整个应用程序。

这是一个非常相似的问题(关于活动中适配器的内部类的用户)和答案: What is the better way, keeping adapter as an inner class of activity or outside?