2017-10-04 9 views
1

:私たちは周りContext変数を渡すたび、私たちは、アプリケーションクラスからシングルトンの参照を得ることができる代わりに保存Applicationクラスの静的コンテキスト変数

たとえばはこちら独自のインスタンスへの単一の静的変数ポインティングとApplicationクラスのサブクラス

public class App extends Application { 

    public static mApp; 

    @Override 
    public void onCreate(){ 

     mApp = this; 
    } 
} 

その後、我々はどこからメソッドにContextを渡す必要があり、私たちは

foo(App.mApp); 
を行うことができます

Contextをアプリケーション変数として扱っても大丈夫ですか?

+0

正常に動作します。私はそれに取り組んでいます。 –

+2

これは文脈に関する最高の記事です:https://possiblemobile.com/2013/06/context/ 静的なアプリケーションコンテキストを格納することは、あなたがやっていることや使用できる場所それ! –

+1

これは、アプリケーションコンテキストを使用でき、アクティビティコンテキストを必要としない限り正常に動作します。 – Henry

答えて

1

これは、使用しているコンテキストによって異なります。多くの場合、コンテキストは、ライフスコープが完了するまで物事を保持し、ガベージコレクションが所有していたものを取り戻すことを許可します。

その他の場合、コンテキストは、ライフサイクルコールバック(onNewIntentやonActivityResultなど)を処理するアクティビティである必要があります。

親に静的インスタンスを保持することは、getApplication()を必要とせず、アプリケーションのタイプとしてキャストすることを避けるための単なるショートカットです。私は通常、MyApplication.getApplication()。doSomethingのメソッドを作成します。これは、((MyApplication)getApplication())とは対照的に、自分自身の参照を返します。doSomething

コーディングの目的でもっときれいです。しかし、私はコンテキストが必要などこでもアプリケーションコンテキストを使用することに非常に気をつけています。

しかし、確かに共有する静的変数として自分自身を保存することはできますが、ほとんどのアプリケーションで行いますが、一般的にはきれいな保守可能なコードの特定のショートカットを目的としています。

関連する問題