2012-07-12 27 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?

相關問題