私はAbstractThreadedSyncAdapterを使用して、Androidの携帯電話からの一部のデータをサーバーと同期しています。ユーザーが電話のアプリケーションでログインすると、最初の同期を実行して、ユーザーが私のアプリケーションでの作業を開始する前に、電話ですべてのデータを準備できるようにします。eclipseのエミュレーターでテストしましたが、正常に動作しますが、電話でテストすると、関数onPerformSyncを呼び出すのに時間がかかりすぎます(1分以上など)。
これは、オーセンティケーターアクティビティで使用するコードです。
Bundle params = new Bundle();
params.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, false);
params.putBoolean(ContentResolver.SYNC_EXTRAS_DO_NOT_RETRY, false);
params.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false);
ContentResolver.addPeriodicSync(account, "com.pfc.authority", params, 30);
ContentResolver.setSyncAutomatically(account, "com.pfc.authority", true);
ContentResolver.requestSync(account,"com.pfc.authority",params);
AbstractThreadedSyncAdapterのコンストラクターは非常に高速に呼び出されますが、アプリケーションは同期が完了するのを待機し続けます。onPerformSync関数の開始に時間がかかりすぎると言ったように、電話の呼び出しに時間がかかりすぎる理由がわかりません。それ。
これはログです(私のアプリケーション用にフィルタリングされています)。Log.dをコンストラクターとonPerformSyn関数に配置しました。
11:47:49 SweetSyncAdapter: constructor
11:48:01 SweetSyncAdapter: constructor
11:48:36 SweetSyncAdapter: onPerformSync
(フィルタリングせずに)完全なログを調べたところ、アプリケーションの実行中にエラーや警告は発生しませんでしたが、別の同期が行われていることがわかりました(音楽、カレンダーなど)。これが問題になる可能性がありますか?
2つの異なるROM(2.3.6 JVUと現在はICS)でテストしましたが、同じです。なぜこれが起こるのか誰かが知っていますか?
PD:今、私はログアウトでも同じことが起こるのを見ました(ユーザーがログアウトするときに同期を実行します)、そして電話はonPerformSyncが呼び出されるのを5分間待っていました)。