3

ユーザー定義の頻度で選択したアカウントを同期する Android アプリケーションを開発しています。

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
Pattern emailPattern = Patterns.EMAIL_ADDRESS;
for(i=0;i<AcntCount;i++)
    for (Account account : list) 
        if (emailPattern.matcher(account.name).matches())  
            if(account.name.matches(syncSettings.getString("Account"+i.toString(), null)))
                //ContentResolver.addPeriodicSync(account, authority, extras, pollFrequency)

authorityextrasの代わりに指定する必要がある値は何ですかaddPeriodicSync()。これには sync-adapter を書く必要がありますか?

4

1 に答える 1

0

はい。SyncAdapter を作成する必要があります。addPeriodicSync() は、タイマーで SyncAdapter を起動するよう ContentResolver に指示するために特に使用されます。

どのような権限が必要ですか? さて、SyncAdapters は (Account,Authority) ペアで機能します。

アカウントは、特定のログインを指定します。たとえば、複数の Gmail アドレスを持っている場合は、複数のログインを指定できます。

オーソリティーはデータの種類を教えてくれます -- たとえば、Gmail のアカウントでは、メール、連絡先、カレンダー、財務などを同期している可能性があります。これにより、データの種類とバインドされているサービスがわかります。アカウント。

ペアは一緒に SyncAdapter に提供されます。より具体的には、システム上にたくさんの syncAdapter があり (それらは同期に使用できる権限を定義します)、PeriodicSync が起動すると正しい syncadapter が検索されます。

そのため、独自のカスタム サーバーと同期する独自のアプリを作成する場合は、スキーマの読み取りと保存の方法を知っている SyncAdapter を作成し、機関を定義します。これらは単なる文字列であり、通常は Java クラスパス スタイルです。-- 「com.example.SyncAdapterSample」

ContentResolver.requestSync が同期をトリガーしないのはなぜですか?をお読みください。動作する SyncAdapter を取得するために必要なすべての手順について。それは間違いなくあなたが行きたい方法です。セットアップには多くの手順が必要ですが、フレームワークがあれば、作業が非常に簡単になります。

今 -- エクストラ。これらは、定期的な同期がどのように行われるかに関するいくつかのオプションです。最初はデフォルトで問題ないはずです。次に、ドキュメントを掘り下げます。たとえば、追加の SYNC_EXTRAS_EXPEDITED は、これがすぐに同期する必要がある優先度の高い更新であることを示します。通常、スケジューラは 1 ~ 2 分待機して、要求をバッチ処理できるようにします (また、すべてのデバイスに無線を持たないことでバッテリーを節約します)。時間、ただし集中バーストのみ)。一般に、SyncAdapter が単純なベースラインのものよりもはるかに複雑になるまで、エクストラについて心配する必要はありません。

于 2014-02-25T14:32:05.603 に答える