title: Should SyncAdapter.onPerformSync be blocking?
body: <p>I am aware that SyncAdapters are executed on a different thread than the main thread but are there any guidelines on how to design the execution?
  The <a href="https://developer.android.com/training/sync-adapters/creating-sync-adapter.html" rel="nofollow noreferrer">docs</a> about it only state that I need to implement the logic by myself, fine but any details?</p>
  
  <p>Any advices on how to use <code>SyncResult</code>? </p>
  
  <p>Should <code>onPerformSync</code> actually be a <em>blocking</em> call or rather not? For instance if I need to execute some async tasks like fetching data from a server, <em>should</em> I or <em>must I not</em> block <code>onPerformSync</code>?</p>
  
  <p>Can I prevent a re-scheduling of the sync with <code>SyncResult</code> in a reliable way instead of using <a href="https://developer.android.com/reference/android/content/SyncResult.html#delayUntil" rel="nofollow noreferrer">delayUntil</a>?</p>
  
  <p>Or should I entirely guard the multi-threading critical parts of <code>onPerformSync</code> with a synchronized object by myself because concurrent or even re-entrant execution can happen at any time?</p>