コンテキストをコンストラクターに渡し、内部使用のためにプライベート変数として保存するのは悪い習慣ですか?もう1つのオプションは、コンテキストを必要とするメソッドにパラメーターとしてコンテキストを渡すことです。
どちらがより良いオプションですか?コンストラクターに渡すと、誤ってメモリリークが発生する可能性があると感じています。
コンテキストをコンストラクターに渡し、内部使用のためにプライベート変数として保存するのは悪い習慣ですか?もう1つのオプションは、コンテキストを必要とするメソッドにパラメーターとしてコンテキストを渡すことです。
どちらがより良いオプションですか?コンストラクターに渡すと、誤ってメモリリークが発生する可能性があると感じています。
多くの場合、必要なのは、だけなApplicationContext
ので、実行できるのは、だけではthis.getApplicationContext()
なくパスthis
です。とにかく、アプリのコンテキストはアプリの存続期間中存在するため、メモリリークではありません。
それはあなたのオブジェクトの寿命に依存します。オブジェクトがアクティビティによって内部的にのみ使用されることが確実な場合は、コンテキストをコンストラクターに渡しても問題ありません。それ以外の場合は、でコンテキストを渡さないでください。
オブジェクトにコンテキストへの参照がある場合、これによりガベージコレクション中のアクティビティが停止します。また、アクティビティにはすべてのビューへの参照があるため、大量のメモリを非常にすばやく簡単にリークできます。
デバイスの回転などによってアクティビティが再作成され、気付かずにオブジェクトに固執するのは簡単なので、ここで簡単に理解できます。
したがって、安全を確保し、必要に応じてコンテキストを渡すのがおそらく最善です。
(起動する)メインアプリケーションで、変数appContextを宣言します: "public static Context appContext;" 次に、このメインアプリケーションのonCreate()メソッドで、「appContext=this;」を割り当てます。appContextはパブリックであるため、このパッケージ内の他のクラスはappContextを使用してXMLリソースを追跡できます。これは(メモリの観点から)もっと良いですか?
リソースが必要なのはリソースだけなので、メインアプリケーションでResourcesオブジェクトをpublic staticとして宣言し、それを他の場所で使用することをお勧めします。