web-dev-qa-db-ja.com

getContentResolver()はどのように機能しますか?

ContentProviderを定義して使用する方法を示すインターネットでContentProviderに関するコースを見ました。

getContentResolver()という名前のメソッドの使用について混乱しました。このメソッドは何を返しますか?

私のContentProviderはインスタンス化されておらず、コードはそのgetContentProvider().query()を書き込むだけです。

ContentProviderの仕組みがわかりません。

22
Kross

Content Resolverを返します。


コンテンツリゾルバーとは何ですか?

コンテンツリゾルバーは、アプリケーション(および他のアプリケーション)のコンテンツプロバイダーへのアクセスを提供する、アプリケーション内の単一のグローバルインスタンスです。コンテンツリゾルバーは、その名前が示すとおりに動作します。クライアントからの要求を受け入れ、それらを別個の権限を持つコンテンツプロバイダーに転送することにより、これらの要求を解決します。これを行うために、コンテンツリゾルバーは、機関からコンテンツプロバイダーへのマッピングを保存します。この設計は、他のアプリケーションのコンテンツプロバイダーにアクセスする簡単で安全な手段を可能にするため、重要です。

コンテンツリゾルバーには、コンテンツプロバイダークラスの抽象メソッド(挿入、削除、クエリ、更新)に対応するCRUD(作成、読み取り、更新、削除)メソッドが含まれています。コンテンツリゾルバーは、対話しているコンテンツプロバイダーの実装を知りません(知る必要もありません)。各メソッドには、対話するコンテンツプロバイダーを指定するURIが渡されます。


コンテンツプロバイダーとは何ですか?

コンテンツリゾルバーはアプリケーションのコンテンツプロバイダーからの抽象化を提供するのに対し、コンテンツプロバイダーは基礎となるデータソース(つまりSQLite database)からの抽象化を提供します。データセキュリティを定義するためのメカニズムを提供し(読み取り/書き込みアクセス許可を適用するなど)、あるプロセスのデータを別のプロセスで実行されているコードに接続する標準インターフェイスを提供します。

コンテンツプロバイダーは、content:// schemaを使用した単純なURIアドレス指定モデルに基づいて、データをパブリッシュおよびコンシュームするためのインターフェースを提供します。これらを使用すると、アプリケーションレイヤーを基礎となるデータレイヤーから分離し、基礎となるデータソースを抽象化することで、アプリケーションのデータソースにとらわれなくなります。

ソース- androiddesignpatterns

50
Aditya

getContentResolver()は、アプリケーションのパッケージのContentResolverインスタンスを返します。

Developer.Android.comから貼り付けます

コンテンツプロバイダーは、構造化されたデータセットへのアクセスを管理します。データをカプセル化し、データセキュリティを定義するためのメカニズムを提供します。コンテンツプロバイダーは、あるプロセスのデータを別のプロセスで実行されているコードに接続する標準インターフェイスです。

コンテンツプロバイダーのデータにアクセスする場合は、アプリケーションのContextのContentResolverオブジェクトを使用して、クライアントとしてプロバイダーと通信します。 ContentResolverオブジェクトは、ContentProviderを実装するクラスのインスタンスであるプロバイダーオブジェクトと通信します。プロバイダーオブジェクトは、クライアントからデータ要求を受け取り、要求されたアクションを実行し、結果を返します。

http://developer.Android.com/guide/topics/providers/content-providers.html

1
GyaniPundit