ContentProvider
を定義して使用する方法を示すインターネットでContentProvider
に関するコースを見ました。
getContentResolver()
という名前のメソッドの使用について混乱しました。このメソッドは何を返しますか?
私のContentProvider
はインスタンス化されておらず、コードはそのgetContentProvider().query()
を書き込むだけです。
ContentProvider
の仕組みがわかりません。
Content Resolverを返します。
コンテンツリゾルバーとは何ですか?
コンテンツリゾルバーは、アプリケーション(および他のアプリケーション)のコンテンツプロバイダーへのアクセスを提供する、アプリケーション内の単一のグローバルインスタンスです。コンテンツリゾルバーは、その名前が示すとおりに動作します。クライアントからの要求を受け入れ、それらを別個の権限を持つコンテンツプロバイダーに転送することにより、これらの要求を解決します。これを行うために、コンテンツリゾルバーは、機関からコンテンツプロバイダーへのマッピングを保存します。この設計は、他のアプリケーションのコンテンツプロバイダーにアクセスする簡単で安全な手段を可能にするため、重要です。
コンテンツリゾルバーには、コンテンツプロバイダークラスの抽象メソッド(挿入、削除、クエリ、更新)に対応するCRUD(作成、読み取り、更新、削除)メソッドが含まれています。コンテンツリゾルバーは、対話しているコンテンツプロバイダーの実装を知りません(知る必要もありません)。各メソッドには、対話するコンテンツプロバイダーを指定するURIが渡されます。
コンテンツプロバイダーとは何ですか?
コンテンツリゾルバーはアプリケーションのコンテンツプロバイダーからの抽象化を提供するのに対し、コンテンツプロバイダーは基礎となるデータソース(つまりSQLite database
)からの抽象化を提供します。データセキュリティを定義するためのメカニズムを提供し(読み取り/書き込みアクセス許可を適用するなど)、あるプロセスのデータを別のプロセスで実行されているコードに接続する標準インターフェイスを提供します。
コンテンツプロバイダーは、content:// schema
を使用した単純なURIアドレス指定モデルに基づいて、データをパブリッシュおよびコンシュームするためのインターフェースを提供します。これらを使用すると、アプリケーションレイヤーを基礎となるデータレイヤーから分離し、基礎となるデータソースを抽象化することで、アプリケーションのデータソースにとらわれなくなります。
getContentResolver()は、アプリケーションのパッケージのContentResolverインスタンスを返します。
Developer.Android.comから貼り付けます
コンテンツプロバイダーは、構造化されたデータセットへのアクセスを管理します。データをカプセル化し、データセキュリティを定義するためのメカニズムを提供します。コンテンツプロバイダーは、あるプロセスのデータを別のプロセスで実行されているコードに接続する標準インターフェイスです。
コンテンツプロバイダーのデータにアクセスする場合は、アプリケーションのContextのContentResolverオブジェクトを使用して、クライアントとしてプロバイダーと通信します。 ContentResolverオブジェクトは、ContentProviderを実装するクラスのインスタンスであるプロバイダーオブジェクトと通信します。プロバイダーオブジェクトは、クライアントからデータ要求を受け取り、要求されたアクションを実行し、結果を返します。
http://developer.Android.com/guide/topics/providers/content-providers.html