我使用SyncAdapter將我的數據與服務器同步。一切正常,但我很難發送額外的SyncAdapter
。ContentResolver.requestSync <=發送附加到=> SyncAdapter.onPerformSync
在我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稱爲()。當我在我的Activity中調用requestSync()
時,一切都如預期般運作。