3

私はしばらくの間Android向けに開発しており、現在サーバーとの同期に取り組んでいます。
簡単な紹介: 私は Sync Adapter について読み、その役割を知っていますが、それが私の最良の選択肢であるかどうかを知りたいだけです。

私のアプリでは、ユーザーはボタンをクリックして、自分にとって重要なことを通知できます。クリックすると、サーバーを更新してデータを保持し、親戚に通知したいと思います。私の問題は次のとおりです。ユーザーはそのボタンをクリックしてオンとオフを切り替えることができるため、その場合、ユーザーがボタンをクリックするたびにサーバーとの通信を開始したくありません。その以前の状態。

したがって、私の質問は次のとおりです。同期アダプターは私にとって正しいものですか、それともサーバーと通信する独自​​のクラスを作成して、それをチェックし、ボレーのように緊急/非緊急を受け取る必要があります。誰かが Sync Adapter の正確な動作を明確にすることができれば、私は本当に感謝しています (それは私が述べたことを行いますか?)

何かが明確でない場合は、喜んで明確にします。前もって感謝します。

4

4 に答える 4

1

Android 同期フレームワークは、使用に適しているはずです。同期を必要としてマークすると、システムはすぐには起動せず、少しだけ遅延します。このようにして、ユーザーがボタンを元に戻した場合、値が変更されていないことに気付くことができます。補足: を使用すると、データが変更されたときに に自動的にContentProvider通知されます。SyncAdapter必要に応じて手動で同期をトリガーすることもできます。

同期フレームワークが行うことは、メソッド ( ) を呼び出すだけonPerformSyncです。好きなように実装するのは自由です。最後の同期が近すぎると思われる場合、またはデータが実際に変更されたかどうか、または元の値に戻っているかどうかを確認する場合は、同期をスキップできます (たとえば、データベースに「最後に同期された」値を保持し、それを比較できます)。メソッドの現在の値に変更しますonPerformSync。同じであれば、変更はありません)。

ボーナス: 同期フレームワークが複数の同期を可能な限り順番に実行するため、バッテリーの電力を節約できます。ユーザーは自分のアカウントを一元管理 (Android の設定) し、システム全体の同期を無効にできます (Sony のスタミナモード、すべての SyncAdapter をアクティブ中に一時停止に設定する)。

于 2013-10-21T15:38:30.197 に答える
0

デバイスでデータが変更されたときに同期アダプターを実行します。このオプションを使用すると、変更されたデータをデバイスからサーバーに送信できます。サーバーに常に最新のデバイス データがあることを確認する必要がある場合に特に便利です。このオプションは、コンテンツ プロバイダに実際にデータを保存する場合は簡単に実装できます。スタブ コンテンツ プロバイダーを使用している場合は、データの変更を検出するのがより難しくなる可能性があります。

ユーザーのアクションに応じて同期アダプターを実行します。ただし、最高のユーザー エクスペリエンスを提供するには、より自動化されたオプションの 1 つに主に依存する必要があります。

同期アダプターを定期的に実行するには、次の実行までの待機時間を設定するか、1 日の特定の時間に実行するか、またはその両方を行います。同期アダプターを定期的に実行すると、サーバーの更新間隔にほぼ一致させることができます。

于 2013-10-27T06:22:18.477 に答える
0

You could also take another approach, pushing from your server to the device, your app does not have to ask from time to time for updates, instead its the server that should tell "hey, i've got something for you".

Have a look at Google Cloud Messaging. On the other hand, if you prefer the approach that the user should specifically ask for his updates then you don't really need to bother if sync adapters - ofcourse, this depends on your app's requirements.

Still, I'd recommend you have a look at GCM, it's cleaner and more elegant for the server to notify then to keep asking.

于 2013-10-22T15:27:40.523 に答える