web-dev-qa-db-ja.com

Android:コンテンツプロバイダー経由でSQLiteデータベースにアクセスしますか、それともDAOを実装しますか?

アプリケーションデータベースにアクセスするための最良のアプローチはどれか疑問に思っています。コンテンツプロバイダーを使用するか、DAOを手動で実装するか。私の最近の調査から、コンテンツプロバイダーは、アプリの内部使用であっても望ましいようですが、各アプローチの欠点が正確にはわかりません。これについてフィードバックをいただけますか?

16
user1135437

Dbを閉じたりロックしたりする心配がある場合は、 ContentProvider を使用することをお勧めします。チェック データベース操作用のシンプルなコンテンツプロバイダー

13

Googleから Docs

構築を開始する前に

プロバイダーの構築を開始する前に、次のことを行ってください:

コンテンツプロバイダーが必要かどうかを判断します。
次の機能の1つ以上を提供する場合は、コンテンツプロバイダーを構築する必要があります。

  • 複雑なデータやファイルを他のアプリケーションに提供したい。
  • ユーザーが複雑なデータをアプリから他のアプリにコピーできるようにする必要があります。
  • 検索フレームワークを使用してカスタム検索候補を提供する必要があります。

使用が完全に独自のアプリケーション内である場合、SQLiteデータベースを使用するためにプロバイダーは必要ありません。

しかし、これや他のいくつかの投稿を読んでいると、少し混乱しました。自分のアプリでのみ使用することを意図している場合、コンテンツプロバイダーイベントを使用することは意味がありますか?

10
MRodrigues

ContentProviderドキュメントから:

コンテンツプロバイダーは、Androidアプリケーションの主要な構成要素の1つであり、アプリケーションにコンテンツを提供します。データをカプセル化し、単一のContentResolverインターフェイスを介してアプリケーションに提供します。コンテンツプロバイダーは、必要な場合にのみ必要です。複数のアプリケーション間でデータを共有するには。たとえば、連絡先データは複数のアプリケーションで使用され、コンテンツプロバイダーに保存する必要があります。複数のアプリケーション間でデータを共有する必要がない場合は、SQLiteDatabaseを介してデータベースを直接使用できます。

他のアプリケーションとデータを共有する予定がない場合は、コンテンツプロバイダーは必要ないようです。

リンク: http://developer.Android.com/reference/Android/content/ContentProvider.html

5
Lu Araujo