2016-06-26 4 views
-1

私はアプリケーション内で多くのビューを動的に作成しています。それぞれには文脈が必要です。どこでも同じコンテキストを使用していますか?

コンテキストのインスタンスを1つだけ使用し、それを全員に渡すか、別のインスタンスを使用する必要がありますか。優れているつまり、

、この -

Context context = this; 

for (int i = 0; i < 10; i++) { 
    SomeView view = new SomeView(context); 
} 

または本 -

for (int i = 0; i < 80; i++) { 
    SomeView view = new SomeView(this); 
} 

注:ビューは、長い時間のために画面上に滞在します。あなたはContext c = X.class;
現在のクラスの使用中の他のクラスのコンテキストを必要とする場合には

+0

ご迷惑をおかけ致します。 downvoteの理由を説明してください。 –

答えて

0

あなたは同じクラスで作業している場合は、直接「this」を使用することができますが、
はそれがお役に立てば幸いです。

0

2つのバリエーションの間に実際の違いはありません。

2番目の例では、thisの別のインスタンスを作成しません!バックグラウンドでJavaが行うのは、コンストラクタにthisへの参照としてポインタを渡すことだけです。一方、最初の例では、thisへの参照をcontextに渡し、同じ参照をコンストラクタに渡します。

これは、ビュー内でコンテキスト内の何かを変更すると、他のすべてのビューでもコンテキストが変化することを意味します。スレッドセーフは、すぐに使用することはできませんので注意してください。

Javaの内部動作については、読んでください:wikipediaはすばらしいスタートです。

関連する問題