0

Android では、アプリケーション オブジェクトをサブクラス化または拡張する必要があるときはいつでも、次のようにします。

public class AndroidApplication extends Application{
....
}

次に、マニフェスト ファイルに必要な変更を加えます。このコード行を書く必要は何ですか?

public class AndroidApplication extends Application{

private static AndroidApplication sInstance;
 public static AndroidApplication getInstance() {
  return sInstance;
}
....
}

Application オブジェクトにアクセスするときはいつでも、次のコードを使用してアクセスします。

MyApplication myapp = (MyApplication)getApplicationContext();

上記は、常に Application クラスの 1 つの静的オブジェクトを返します。getinstance メソッドを記述する必要は何ですか? いくつかのブログや Android 開発者の Web サイトで、上記が正しい方法であると読んだことがありますが、なぜ理解できなかったのでしょうか?

Application オブジェクトは、アプリケーションの実行開始時にメモリ内に作成されます。この後、再初期化することはできません。つまり、次のコードを書くことはできません。

MyApplication myapp = new MyApplication();

たとえそうしたとしても、getInstance メソッドは役に立ちません。

前もって感謝します。

4

1 に答える 1

0

単一の設計パターン (より一般的なコンテキストでは、この設計パターンは実際には良い考えではありません..) は、 android のアプリケーション オブジェクトに適しています。

とにかく、このクラスはフレームワークによって一度インスタンス化されます。

しかし、開発者は、あなたが提案したように、新しいキーワードを使用して、それをインスタンス化したい可能性があります。ここでは、シングルトン デザイン パターンに getInstance メソッドが含まれているだけでなく、プライベート コンストラクターの定義も含まれているため、get インスタンス メソッドの外部でクラスをインスタンス化する可能性を防止しているため、何かが欠けているようです。

したがって、はい、ここでシングルトン パターンを適用できます。開発者がこのクラスをインスタンス化してはならないという事実を強制するためだけに、Android フレームワークによって唯一のインスタンスが作成されます。

于 2012-02-07T13:56:26.407 に答える