SyncAdapter を使用して、データをサーバーと同期します。すべてが機能しますが、エクストラを に送信するのに苦労していSyncAdapter
ます。
私ContentObserver
の場合、次のコードを使用してリクエストを SyncAdapter に送信します。
@Override
public void onChange(boolean selfChange, Uri changeUri) {
Bundle extras = new Bundle();
extras.putParcelable(Globals.EXTRA_URI, changeUri);
extras.putInt("no", 123456);
extras.putBoolean(
ContentResolver.SYNC_EXTRAS_MANUAL, true);
extras.putBoolean(
ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
ContentResolver.requestSync(account, MyProvider.AUTHORITY, extras);
}
ただし、SyncAdapter
一方で、これらの追加機能は取得できません。
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
Uri changeUri = extras.getParcelable(Globals.EXTRA_URI);
int aaa = extras.getInt("no");
Log.i(TAG, "Syncadapter / uri: "+changeUri+"/"+aaa+"/"+extras.size());
//Logcat: Syncadapter / uri: null/0/1
...
}
エクストラを使用して、どのデータを同期する必要があるかを調べたいと思います。また、システムは ContentResolver 固有のエクストラを無視します。たとえば、ContentResolver.SYNC_EXTRAS_MANUAL (同期はすぐには実行されません)。
編集:
ContentObserver.onChange() によって呼び出された場合にのみ、これらの余分なパラメーターが失われていることに気付きました。requestSync()
アクティビティ内で呼び出すと、すべてが期待どおりに機能します。