ContextWrapperを直接使用するのではなく、ContextImplクラスを使用してContextを実装する理由を理解していない、Contextの2つのサブクラスのコンテキストで最近ですか?AndroidでContextWrapperではなくContextImplを使用してContextを実装するのはなぜですか?
答えて
コンテキストは抽象クラスであり、アプリケーション環境に関するグローバル情報へのインタフェースとして機能します。これは、Androidシステムによって実装が提供される抽象クラスです。これは、アプリケーション固有のリソースとクラスへのアクセスを可能にするだけでなく、アップの呼び出しなど
参照Contextクラスコードhere
ContextWrapperなど、活動、放送を開始し、インテントを受け取るなど、アプリケーションレベルの操作についてContextのアダプター実装またはプロキシー実装で、すべての呼び出しを別のContextに委譲します。元のコンテキストを変更せずに動作を変更するために、サブクラス化することができます。 【これはadapter pattern]
参照ContextWrapperクラスコードhere
を使用ContextImpl活性および他のアプリケーションコンポーネントのベース・コンテキスト・オブジェクトを提供するコンテキストAPIの一般的な実装です。
を参照してくださいContextImplクラスコードhere
次の3つのクラス上記のコードを参照するのであれば、あなたは が簡単ContextImplは、これらのAPIメソッドを実装し、抽象クラスContextクラスは、API メソッドを宣言理解することができ、一方、 ContextWrapperクラスは、Contextの子クラスを使用するよりも、 ではなく、アダプタパターンが必要なさまざまな場所で を使用できるように、Contextタイプのアダプタです。
混乱を軽減することを願っています!
ありがとう –
- 1. AndroidでContextWrapperのメソッドを実装しているクラスはどれですか?
- 2. ContextWrapperとContextを使用してAndroid WebViewオブジェクトを作成したときの違いは何ですか?
- 3. IEnumerableを実装しているクラスでLINQメソッドを使用できないのはなぜですか?
- 4. イテレータからすべての関数を実装してイテレータを実装しないのはなぜですか?
- 5. Pythonでジェネレータの実装が正しくないのはなぜですか?
- 6. リモートマシンで偽装を使用してファイルを開くことができないのはなぜですか?
- 7. java.util.BitSetがjava.util.Setを実装しないのはなぜですか
- 8. なぜArrayListはQueueを実装しないのですか?
- 9. AtomicUsizeがSendを実装しないのはなぜですか?
- 10. リンクリスト実装を使用してスタックから要素をポップできないのはなぜですか?
- 11. なぜIDataReaderクラスはC++ではなくc#で実装できますか?
- 12. ZXingでrotateCounterClockwise()を実装するのはなぜですか?
- 13. Screenを実装するクラスでcontextを使用する方法は?
- 14. なぜ[context save:&error]はNOを返し、エラーはnilですか?
- 15. Scalaでのマッチは、メソッドではなくキーワードとして実装されたのはなぜですか?
- 16. なぜweb.xml 'context-param'に文字[children]を使用できないのですか?
- 17. ArrayListの実装でObject []が使用されるのはなぜですか?
- 18. DameでIEquatableを実装するバリューオブジェクトはなぜですか?
- 19. JavaがArrayListクラスを使用してHashtable/HashMapクラスを実装していないのはなぜですか?
- 20. なぜnsqlookupdパッケージがContextを使用していますか?
- 21. なぜ抽象化を使用しないのはなぜですか? (リポジトリ/ DAOの実装)
- 22. カスタムタイプのマップの実装が正しくないのはなぜですか?
- 23. 配列やベクトルの実装ではなく、リンクリストを使ってスタックやキューを実装するのはなぜですか?
- 24. Fermat's Factorizationの実装が正しくないのはなぜですか?
- 25. ImageButton(Android-Java)が実際の画像にonClickを実装していないのはなぜですか。
- 26. xtsがデータフレームではなく行列として実装されるのはなぜですか?
- 27. ベクターがアソシエーティブを実装するのはなぜですか?
- 28. JPGではなくPNGを使用するのはなぜですか?
- 29. SQL ServerではなくLocalDBを使用するのはなぜですか?
- 30. GPUではなくレイトレーシングにCPUを使用するのはなぜですか?
これは 'ContextWrapper'の役割ではありません。 'ContextWrapper'は[ラッパー(またはアダプター)パターン](https://en.wikipedia.org/wiki/Adapter_pattern)を実装しています。 – CommonsWare