2011-01-23 4 views
2

次のような状況にあるプログラムを作成しています。dbに情報がない場合は、dbをチェックするコンテンツプロバイダーにRESTコンテンツプロバイダーを指定する必要があります。

レシピを検索したいので、Activityはdb ContentProviderを呼び出します。

レシピはローカルに保存されていないため、Webサービスに呼び出してデータを取得します。

このデータはデータベースに保存されますが、ローカルコピーを保存したくない場合は、後で削除することを選択しますが、インターネットに常時接続せずに買い物をしたり料理したりすることができます。

私のデザインは過度に複雑になっていると思います。

私は現在、RESTサービスを呼び出すServiceと、ContentProviderをデータベースに持っています。

ServiceContentProviderに置き換えることを検討しています。長期間稼働するサービスはまれにしか実行されないため、不要です。

アクティビティはdb ContentProviderを呼び出し、クエリが空の場合、ActivityProviderはREST ContentProviderを呼び出します。アクティビティはデータの出所を気にする必要がないため、db ContentProviderは活動に戻る前に

私のシナリオではこれが最善のアプローチですか、それともContentProvidersを連鎖させるのが悪いのですか?

+0

これをどのように解決しましたか?私はまったく同じ状況にあり、現在、コンテンツプロバイダからサービスを開始する方法(REST用のサービスの使用を好む)はわかりません。 – Ixx

+0

ああ...これはもっと情報的かもしれない:http://stackoverflow.com/questions/9112658/google-io-rest-design-pattern-finished-contentprovider-and-stuck-now – Ixx

+0

@Ixx - 私はそれを棚上げした私はそれをまだ解決していませんが、暦年の終わりまでにそれに戻ることを期待しています。 –

答えて

0

これは良いアプローチのようです。現在、私は似たようなものを開発しています。私は、この偉大な記事を見つけました。ここで、著者はすべてを段階的に説明し、何が使われているのか、何が最良のアプローチなのかなどを述べています。何か問題を抱えている場合は、それを見てください: http://programming-android.labs.oreilly.com/ch11.html

+0

本はもう利用できません(無料)。 – Ixx

1

私はかなり妥当だと思います。しかし、私はあなたがまだサービスを維持できると思うが、ContentProviderを介してデータを公開するだけだ。ここで問題となるのは、ContentProviderでサービスを開始(またはバインド)する必要があり、MockContextがサービスの開始をサポートしていないため、ProviderTestcase2<Provider>を使用してプロバイダをテストするときに問題が発生することです。

関連する問題