2013-02-24 5 views
6

私はアンドロイドのコンテンツプロバイダからの公式ドキュメントを読んでいると私はこれを見てきました:あなたは、コンテンツプロバイダが必要な場合コンテンツプロバイダを使用する必要がありますか?

を決定します。

は、あなたは以下の特徴の1つ以上を提供したい場合は、コンテンツプロバイダ を構築する必要があります:

  • あなたが他のアプリケーションに複雑なデータやファイルを提供したいと考えています。
  • ユーザーがアプリから複雑なデータを他の アプリにコピーできるようにしたいとします。
  • 検索フレームワークを使用してカスタム検索候補を提供する必要があります。
  • の使用が完全にあなた自身のアプリケーションの中にある場合、プロバイダはSQLiteデータベースを使用する必要はありません。

私は位置がIntentServiceを通じて変化したときに、バックグラウンドでデータを同期するアプリを開発しています。

私が見たことは、ContentProviderを使用すると、ユーザーが気付かずに本当に必要なデータが変更されたことを確認できたということです。それはIntentServiceで変更され、MainActivityはこの変更を観察し、通知されるとレイアウトコンテンツが変更されます

これは言及していませんが、ContentProviderを使用することをお勧めしますか?

おかげで個人的に

+0

[コンテンツプロバイダを使用するタイミング](http://stackoverflow.com/questions/4936712/when-to-use-a-content-provider) –

答えて

13

、私は最後の一年半のためにすべての私のプロジェクトでContentProvidersを使用しています。これらは、データベースに依存しない優れたデータ抽象化を提供し、データにアクセスします。それらは非常に柔軟性があります。私は、あるURIがSharedPreferenceを指し、他のURIがデータベーステーブルにアクセスするためのどこにあるのかというプレイプロジェクトもありました。 ContentProvidersを使用すると、たとえば、CursorLoadersなどの既存のフレームワークインフラストラクチャを使用することもできます。インターフェイスと抽象クラスから独自のものを実装することはそれほど難しいことではありませんが、時間がかかり、エラーが発生しやすく、既に試してテストされている作業を活用することが大きな利点です。

ところで、Cyril Mottierが非常に良い答えを出した約2週間前にgoogle +の投稿に同じ正確な質問を覚えています。 hereを読むことができます。

関連する問題