How to code a “sync now” operation on Android?

2019-03-20 19:24发布

问题:

I have a sync adapter for my DB and at certain points in the application usage, it needs to sync the DB now. I would like to trigger the sync adapter as if its sync-time popped and then re-establish the sync time (i.e., 4 hours from this 'sync now" event).

回答1:

I think (not tested) a better solution is already defined in the ContentResolver.

ContentResolver.requestSync(account, authority, extras);

so one might do the following:

AccountManager am = AccountManager.get(context);
Account account =  null;
am.getAccountsByType(mytype);
for(Account a : accounts) {
    if (am.getUserData(account, key)) {
        account = a;
        break;
    }
}
Bundle extras = new Bundle();
extras.putString(EXTRA_mystuff, myvalue);
ContentResolver.requestSync(account, authority, extras)