2012-03-12 11 views
3

Android同期フレームワークとの同期を実行するアプリケーションをセットアップしました。ほとんどの内部は、同期アダプタのデモから取得されています。私は非常に単純な質問を持って、このアプリはいつ同期するのですか?私は彼らがあなたが同期するようにセットアップしているサービスでこれはまた、ネットワーク "くすぐり"を受け取ったときにGoogleのサービスが同期することを知っていますか?Androidアプリの同期スケジュール

答えて

5

Amorgosには、C2DMプッシュメッセージが記載されています。変更をクラウドで作成した後すぐに変更を同期することが重要な場合は、変更を実装することを検討する必要があります。詳細については、hereを参照してください。

同期操作を要求する場合、参照するクラスはContentResolverです。 requestSync(アカウントアカウント、文字列権限、バンドル追加)(今すぐ同期ボタンなどに使用します)を同期させたい場合。あなたのContentProviderの変更を同期するには、(偽と同期なしトリガされると真を置き換える同期すべきではない変更)のエントリを変更/作成した後

getContentResolver().notifyChange(CONTENT_URI, null, true); 

を呼び出すことができます。 SyncAdapterのxmlファイル内のアンドロイド:supportsがtrueに設定されている場合、自動的に同期がトリガーされます。この場合、SyncAdapter内のバンドルには、真であるContentResolver .SYNC_EXTRAS_UPLOADというブール値が含まれています。これを使用して、ローカルの変更をクラウドに同期させ、何も照会しないことができます。

各時間を同期させたい場合は、addPeriodicSync(アカウントアカウント、文字列権限、バンドルエクストラ、長いpollFrequency)を使用してください。

また、ContentResolverを使用して、同期する必要がある場合は読み込み/設定できます(アカウント&のデバイス設定に表示されている値)。メソッドはgetIsSyncable(...)です。setIsSyncable(...)です。

こちらがお役に立てば幸いです。

編集: また、これは本当に良いのプロセスを説明しますWhy does ContentResolver.requestSync not trigger a sync?

1

すべてはアプリケーションの要件によって異なります。ユーザーが直ぐに知っている重要ではないデータを同期している場合は、同期を開始するOSで十分です。 (連絡先の一覧はこれの完璧な例です)

あなたのアプリがよりリアルタイムで通知されている場合、C2DMプッシュ通知を使用して同期処理を開始することを検討する必要があります。サーバーがデータを変更してデバイスに送信すると、C2DMメッセージを生成できます。アプリはこのメッセージの内容に基づいて同期処理を実行します。 (C2DMは、Gmailなどのネットワークチックル)

どのような方法であれ同期を効率的に開始するかどうかは、アプリケーションの設計者が決定します。すべてのアプリの同期要件が異なります。

関連する問題