0

内部クラスを使用するとアプリが大きくなる(使用される内部クラスごとに数KB)という本を読んだのですが、パフォーマンスについて何か懸念はありますか?Google のサンプル コードで内部クラスが使用されているのを見ましたが、一般的に、Android では内部クラスを使用することをお勧めしますか?

ありがとう!

4

3 に答える 3

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


                }
           }
       }
于 2012-07-12T04:45:37.967 に答える
2

内部クラス、匿名クラス、および通常のクラスの間でコード サイズに大きな違いがあってはなりません。内部と通常の違いについては、jar を解凍して、それぞれに対して通常の .class ファイルが生成されていることを確認できます。

したがって、不要なものに夢中になることはありませんが、「絶対に避ける」シナリオでもありません.

于 2012-07-12T04:36:16.397 に答える
1

静的内部クラスを使用する限り、問題ありません。静的内部クラスは、クラスを便利に配置し、それらを適切にスコープするためのものです。

非静的内部クラスは、それらを保持するクラスへの参照を保持するため、これは当てはまりません。これは重いだけでなく、保持クラスがライブのクラス、つまり Context がアタッチされている Android でも危険です。これにより、メモリ リークが発生し、アプリケーション全体がリークする可能性があります。

これは非常によく似た質問 (アクティビティのアダプターの内部クラスのユーザーに関するもの) と答えです: アダプターをアクティビティ の内部クラスまたは外部として保持するより良い方法は何ですか?

于 2012-07-12T04:38:57.980 に答える