私はContagにDaggerを注入することが可能であることを知っています。例はhereとhereです。コンテキストにDaggerを挿入する必要がありますか?
一方、リークを避けるために静的変数にコンテキストを配置しないことについては、多数の記事があります。 Androidスタジオ(糸くず)もこれについて暖かいです:
Androidのコンテキストクラスを静的フィールドに配置しないでください。これは私がダガーでコンテキストを注入することにより、我々はシングルトンクラスでそれを置いているので、コンテキストが何らかの形で静的であることを理解し メモリリークである(ともインスタントランを破る)
。これはリントの警告に反していませんか?
コンテキストを注入すると、何らかの理由でそれを必要とする他のクラスにさらに渡すことができるように、不要な複数のクラスに渡す必要がなくなるため、よりクリーンなコードが作成されるようです例えばリソースを取得する)。
これは、何らかの望ましくないリークや糸くずが何らかの原因で発生する可能性があることを心配しています。
私はアプリケーションのコンテキストを提供する傾向があります。 – EpicPandaForce
「@ Singleton」コンポーネントは静的変数に格納しない限り、単なるPOJOであり、静的ではないことを指摘したいと思います。したがって、アプリケーション内のアプリケーションへの参照を持つシングルトンAppComponentを保持すると、同じライフサイクルを共有するため、「静的」ではありません –
ここでは静的に使用されている可能性があります。しかし、シングルトンコンポーネントによって作成されたオブジェクトは、アプリケーションライフサイクル全体にわたって存続します。これは、ライフサイクルが短いこのコンポーネント(アクティビティのコンテキストなど)に決して何かを提供してはならないと考えています。 – fhsilva