I\'ve come across some slightly odd behaviour with my SyncAdapter.
The first time I install my app (after uninstalling with adb), it launches and creates an account
I found that contentResolver.requestSync()
will never trigger your SyncAdapter.onPerformSync() unless you call ContentResolver.setIsSyncable(account, getString(R.string.CONTENT_AUTHORITY), 1);
.
For a detailed account of the solution I went with using SyncAdapter, see my answer here:
https://stackoverflow.com/a/12015967/988870
I just banged my head against a wall for hours trying to figure out why periodic sync wasn't working. It turns out that the poll frequency needs to be in seconds (literal) not milliseconds, and not seconds in milliseconds. So, for example, if you want it to sync every minute and a half, you would need to call:
ContentResolver.addPeriodicSync(
account,
authority,
Bundle.EMPTY,
90
);
Also, the bundle passed in cannot be null as it is in the documentation, it will throw a NullPointerException.