2011-12-30 16 views
2

データベースに情報を保存し、情報をディスクに保存するアプリケーションを構築しています。私はこれをどうすればいいのだろうと思っていただけですか?ディスク内のファイルとdb内の情報を格納するコンテンツプロバイダ

コンテンツプロバイダーは、データベースのみのために働くか、またはディスクからのものを取得するために使用することができますか?私は基本的に私は、データベースだけでなく、ディスク毎回から情報を取得したいと思い、..だから私は私のデータがグローバル検索などに表示したい場合がありますので、コンテンツプロバイダを使用する

を計画しています。コンテンツプロバイダを使用してコンテンツをディスクからアクセスできる場合は、2つのコンテンツプロバイダ、または1つのコンテンツプロバイダ(SQLiteとディスクにアクセスする)を持っている必要があります。

答えて

3

コンテンツプロバイダのクエリメソッドでは、ディスク/ネットを取り出し、MatrixCursorを返却してください。ここでは基本的なexampleアンドロイドのdocから

+0

あなたは私が1デシベルのためのコンテンツプロバイダだけでなく、ディスクストレージまたは2つの別々のコンテンツプロバイダを使用する必要があると思いますか? – Sunny

2

サニー、

複数の方法でディスク、dbまたはウェブからデータにアクセスできます。 ContentProviderを使用する理由と使用しない理由は、データへのインターフェイスを構築しているためではなく、そのデータにアクセスする必要があるため、またそのデータをどのように配布する必要があるかが原因です。本質的に、それはアクセス(セキュリティレベル)の問題かどうかです。 (あなたのデータとそれらにアクセスツール、すなわちどのように敏感である)

あなたがデータにアクセスする複数のパッケージに複数のオブジェクトを持っている場合は、ContentProviderのは、移動するための方法かもしれません。これは、複数のパッケージが別々のアプリケーションである場合に特に当てはまります。さらに重要なのは、ContentProvidersは特定のデータに対する汎用要求を許可することです。つまり、アプリは、連絡先を誰に提供するのかを知るのではなく、連絡先を要求するだけで連絡先を要求することができます。

最終的に、決定はあなたがあなたのデータにアクセスしたい何をどのようになります。アプリケーションをローカライズしたい場合、アプリケーションがどのように要求しているのか、どのようにして誰から参照するのか、正確に知るためには、ローカライズされたクラスとカスタムの特殊なアダプタを使用してContentProviderを実行することができます。あなたのニーズを満たす。あなたのデータにアクセスするために複数のコンポーネントやプログラムが必要な場合は、考慮する必要がありますが、質問はリクエスターと、ソースがリクエスターにとって重要かどうかについてです。

あなたの次の質問は、あなたがのContentProviderを使用している場合、あなたは1以上のものを使用する必要があるということでした。ここでもあなたのニーズに基づいて実装する方法はあなたの選択です。しかし、それに従うべきいくつかの良い実践がありますが、それはあなたにいくつかの指針を与えるかもしれません。各クラスは実際には本当に1つのことをすべきであり、それは具体的でなければなりません。 ContentProviderが何を問わずデータを提供する必要がある場合は、両方を同じプロバイダ内で実装することは可能ですが、ややこしいことがあります。リクエスタ(通常はアクティビティ)がディスクとデータベースの区別を行う場合は、おそらく複数のプロバイダである必要があります。私が言うことは嫌いですが、私たちが行うことができるのは選択肢、考慮事項、結果を提供することなので、必要なものを定義する必要があります。しかしねえ!それはプログラミングについての美しいものです!必要なものを選択し、それらのニーズに合ったソリューションを作ることは、決して教えられなかったことを行う新しい方法を見つける可能性があります。このことができます

希望、 FuzzicalLogic

関連する問題