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のインスタンスを返す