2012-02-07 9 views
0

オブジェクトマニフェストファイル。 このコード行を書く必要はありますか?上記はアンドロイドで

MyApplication myapp = (MyApplication)getApplicationContext(); 

常にあなたのApplicationクラスの1つの静的オブジェクトを返すために起こっている:あなたは、Applicationオブジェクトにアクセスしようとしているときはいつでも

public class AndroidApplication extends Application{ 

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

次のコードを使用してアクセスしようとしています。 getinstanceメソッドを記述する必要はありますか?私はいくつかのブログやアンドロイドデベロッパーのウェブサイトでこれを読んだことがあります。

アプリケーションオブジェクトは、アプリケーションの実行が開始されるとメモリに作成されます。この後、あなたは、このコードを記述しないことができることを意味し、それを再初期化することはできません。

MyApplication myapp = new MyApplication(); 

そして、あなたがあなたをした場合でも、getInstanceメソッドは役に立ちません。

ありがとうございます。

あなたは右、とにかく、このクラス:

答えて

0

シングルデザインパターンは、(また、より一般的な文脈で、このデザインパターンは本当に良いアイデアではありません。)アンドロイドのアプリケーションオブジェクトに適していますフレームワークによって一度インスタンス化されます。

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

はい、シングルトンパターンをここに入力することができます。デベロッパーがこのクラスをインスタンス化する必要がないという事実を強制するだけで、唯一のインスタンスはアンドロイドフレームワークによって作成されます。

+0

OKです。しかし、私がクラスをインスタンス化してはならない他の理由はありますか? – user590849

+0

アプリケーションのライフサイクルはアンドロイドフレームワークによって与えられます。このクラスの新しいオブジェクトを作成することは、ライフサイクルを生きるために設計されたライフサイクルにバインドできないため、あまり意味がありません。 – Snicolas