ContentProviderクラスについて

ContentProviderクラスについて

ContentProviderは、アプリにコンテンツを提供するAndroidの基本的な部分の一つ

コンテンツをカプセル化し
単一のContentProviderインターフェースをアプリに提供する

ContentProviderは、データを複数のアプリで共有するのに必須

例として、複数のアプリで使われる連絡先データは
ContentProviderに保存されなければならない

他のアプリとデータ共有しないのなら
SQLiteDatabaseで直接DB操作すればいい

ContentProviderを通じてリクエストされると
システムはURIクラスに対する権限を調べ
権限があるリクエストだけContentProviderへ渡す

ContentProviderは、
要求されたものに対して解析することができる

URIクラスを解析するのを助けるものとして
URIMatcherクラスがある

実装するべき主なメソッドとしては

onCreate()
プロバイダーの初期化

query(Uri,String[], String)
呼び出し者にデータを返す

insert(Uri,ContentValues)
ContentProviderへデータを新規追加する

update(Uri,ContentValues,String,String[])
ContentProviderにあるデータを更新する

delete(Uri,String,String[])
ContentProviderのデータを削除する

getType(Uri)
ContentProviderデータのMIMEタイプを返す

次にスレッドについて
データにアクセスするメソッドの
insert(Uri,ContentValues)
とか
update(Uri,ContentValues,String,String[])
などは、複数のスレッドから呼ばれる可能性があるため
スレッドセーフである必要がある

それ以外のスレッド
例えば、onCreate()などは
アプリのメインスレッドからのみ呼ばれるので
長時間処理を避ける必要がある

ContentResolverへのリクエストは、自動的に
適切なContentProviderInstanceへ配送されるため
サブクラスはプロセスをまたぐ呼び出しについて
詳細を気にする必要はない

API level 16で追加された項目は

インターフェース
android.content.ComponentCallbacks2を継承する

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal)
の追加

関連するフィーチャーは
ContentProvider.PipeDataWriter


これは、パイプにデータのストリームを書き出すインターフェース

コンストラクタは、
public ContentProvider()
これは、ContentProviderのインスタンスを返す

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です