2012-07-12 52 views
0

我读过一些书中使用内部类会使应用程序更大(每个内部类使用几个KB),但是有没有关于性能的问题?我在Google的示例代码中看到了内部类,但是总的来说,是否鼓励在Android中使用内部类?是否鼓励在Android开发中使用内部类?

谢谢!

回答

3

内部类是优秀的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 


       } 
      } 
     } 
2

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

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

1

只要你使用静态内部类,你会没事的。静态内部类更适合于方便地安排类并适当地对其进行范围。

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

这是一个非常类似的问题(关于内部类的用户在活动适配器),答案:当你想实现一个接口方法不止 What is the better way, keeping adapter as an inner class of activity or outside?

相关问题