So as I mentioned in the meeting I am dog fooding some sync ideas on Android in the form of a DevNexus app.

Here are the two main interfaces that have precipitated out so far:

https://gist.github.com/secondsun/df6724e89d7ae06cbb64

*Warning Android Gory Details begin here*

I am working towards a PeriodicSyncAdapter that I mentioned in a previous email.  Android has this type of functionality built in but it is VERY VERY heavy on boilerplate, XML, and complexity.  I want to build something which is lighter.

My current idea is to create a BroadcastReceiver which users can register.  The SynchronicationConfigs (no code to share but they are just Key/Value Pojo's) will be instantiated into Synchronizers using a Sychcronize factory class (think Pipeline).  The Sychcronize factory will tell the BroadcastReceiver about the Synchronizers, but the Sychronizers will be what does the data loading, saving, scheduleing, etc.

The Synchronizer and BroadcastReceiver are separate classes.  The BroadcastReceiver will be setup in the AndroidManifest.xml file and the Synchronizer will be managed by user code.  The reason they BroadcastReceiver isn't managed by user code is because Android won't wake up code which isn't in the AndroidManifest.  IE if a sync event happens while the app is not running then the sync will not happen.

Summers