30

このトピックに関する非常に有名なビデオを見た後、私はデザイン パターン B を使用することにしました。

残りのGoogleデザインパターン.

基本的に、次のファイルがあります。

  • マイプロバイダー
  • マイデータベース
  • マイコントラクト

アクティビティで contentresolver を取得し、プロバイダーにクエリを実行できるようになりました。これまでのところ、すべてがうまく機能しています。

ここで、REST API からデータをフェッチするために contentprovider を同期する必要があります。したがって、サービス ヘルパー サービスと Rest メソッドを実装する必要があります。Google IO アプリの勉強はとても役に立ちました。私は Android の初心者なので、まだ理解するのは難しいです。

Google は RemoteHandlers を使用して外部データを処理しているようですが、それらは図の Processor クラスであると思いますか?

私が理解していないのは、ネットワークからデータを取得するために servicehelper + サービス部分を実装する方法です。

  • サービス ヘルパーはどこで呼び出せますか?
  • サービスとヘルパーは正確に何をする必要がありますか?
  • この正確な設計パターンの良い例はありますか?

これについてスタックに関するいくつかのトピックを読みましたが、すべて異なる方法を提案しています。restprovider を宣言する例を見つけたので、myProvider はそのプロバイダーを拡張する必要があります。私はそれらのソリューションが好きではなく、この構造化された設計パターンに従いたいと考えています。

4

1 に答える 1

20

私の理解では、パターンは次のとおりです。

  • 空のアクティビティを表示せず、コンテンツをバックグラウンドでロードします。ロードに失敗すると、何も表示できなくなります。
  • 代わりに、コンテンツ プロバイダーとアダプターを介してアクセス可能なデータベースに格納されたデータを表示します。これにより、ユーザーは常にコンテンツを表示することが保証されます。
  • バックグラウンドで新しいデータをフェッチします。データが電話にあると、アダプターを介してアクティビティが自動的に更新されます

あなたの質問に(私は順序を変更しました):

サービス ヘルパーはどこで呼び出せますか?
Vigils talk からパターン A を選択します。その場合、呼び出しはアプリケーションによって異なります。アプリケーションの起動時、アクティビティの作成時、またはユーザーが更新ボタンを選択したときに、更新をトリガーできます。アクティビティの作成時に選択します。

パターン B を選択しました。この場合、コンテンツ プロバイダーが更新をトリガーする必要があることは明らかです。いつ?新しいデータを取得する場合: 作成時または最初の読み取りアクセスの後。作成時間を使用します。コンテンツ プロバイダーの対応するアクションの後に作成、更新、削除します。

この正確な設計パターンの良い例はありますか? https://stackoverflow.com/a/8693919/734687
の私の投稿から: 私が知っている唯一のオープン ソース リファレンス実装は、http://datadroid.foxykeep.comで入手できます。独自のアプリケーションで使用できるライブラリです。アーキテクチャは /presentation の下で説明されています - 必ず読んでください。

サービスヘルパーは正確に何をする必要がありますか? スライド 19 のスライド
を見ると、サービスへの呼び出しをカプセル化し、リクエスト ID を介して非同期呼び出しを処理するシングルトンです。

サービスは正確に何をする必要がありますか?
このサービス (プレゼンテーションのスライド 17) は、アクションがバックグラウンドで実行されることを保証するだけです。

于 2012-02-08T15:19:48.883 に答える