2016-08-24 10 views
2

ContextWrapperを直接使用するのではなく、ContextImplクラスを使用してContextを実装する理由を理解していない、Contextの2つのサブクラスのコンテキストで最近ですか?AndroidでContextWrapperではなくContextImplを使用してContextを実装するのはなぜですか?

+0

これは 'ContextWrapper'の役割ではありません。 'ContextWrapper'は[ラッパー(またはアダプター)パターン](https://en.wikipedia.org/wiki/Adapter_pattern)を実装しています。 – CommonsWare

答えて

2

コンテキストは抽象クラスであり、アプリケーション環境に関するグローバル情報へのインタフェースとして機能します。これは、Androidシステムによって実装が提供される抽象クラスです。これは、アプリケーション固有のリソースとクラスへのアクセスを可能にするだけでなく、アップの呼び出しなど
参照Contextクラスコードhere

ContextWrapperなど、活動、放送を開始し、インテントを受け取るなど、アプリケーションレベルの操作についてContextのアダプター実装またはプロキシー実装で、すべての呼び出しを別のContextに委譲します。元のコンテキストを変更せずに動作を変更するために、サブクラス化することができます。 【これはadapter pattern]
参照ContextWrapperクラスコードhere

を使用ContextImpl活性および他のアプリケーションコンポーネントのベース・コンテキスト・オブジェクトを提供するコンテキストAPIの一般的な実装です。
を参照してくださいContextImplクラスコードhere

次の3つのクラス上記のコードを参照するのであれば、あなたは が簡単ContextImplは、これらのAPIメソッドを実装し、抽象クラスContextクラスは、API メソッドを宣言理解することができ、一方、 ContextWrapperクラスは、Contextの子クラスを使用するよりも、 ではなく、アダプタパターンが必要なさまざまな場所で を使用できるように、Contextタイプのアダプタです。

混乱を軽減することを願っています!

+0

ありがとう –

関連する問題