Loading services/core/java/com/android/server/content/SyncManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -453,10 +453,48 @@ public class SyncManager { } } } ensureDefaultPeriodicSyncsH(); } }); } private void ensureDefaultPeriodicSyncsH() { long defaultPeriod = SyncStorageEngine.DEFAULT_POLL_FREQUENCY_SECONDS; long defaultFlex = SyncStorageEngine.calculateDefaultFlexTime(defaultPeriod); List<AuthorityInfo> authorities = mSyncStorageEngine.getAllAuthorities(); List<SyncOperation> syncs = getAllPendingSyncsFromCache(); for (AuthorityInfo authority: authorities) { boolean foundPeriodicSync = false; for (SyncOperation op: syncs) { if (op.isPeriodic && authority.target.matchesSpec(op.target)) { foundPeriodicSync = true; break; } } if (!foundPeriodicSync) { EndPoint target = authority.target; final RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo = mSyncAdapters.getServiceInfo( SyncAdapterType.newKey( target.provider, target.account.type), target.userId); if (syncAdapterInfo == null) { continue; } scheduleSyncOperationH( new SyncOperation(target, syncAdapterInfo.uid, syncAdapterInfo.componentName.getPackageName(), SyncOperation.REASON_PERIODIC, SyncStorageEngine.SOURCE_PERIODIC, new Bundle(), syncAdapterInfo.type.allowParallelSyncs(), true /* periodic */, SyncOperation.NO_JOB_ID, defaultPeriod * 1000L, defaultFlex * 1000L) ); } } } private synchronized void verifyJobScheduler() { if (mJobScheduler != null) { return; Loading services/core/java/com/android/server/content/SyncStorageEngine.java +11 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ public class SyncStorageEngine extends Handler { private static final String XML_TAG_LISTEN_FOR_TICKLES = "listenForTickles"; /** Default time for a periodic sync. */ private static final long DEFAULT_POLL_FREQUENCY_SECONDS = 60 * 60 * 24; // One day static final long DEFAULT_POLL_FREQUENCY_SECONDS = 60 * 60 * 24; // One day /** Percentage of period that is flex by default, if no flexMillis is set. */ private static final double DEFAULT_FLEX_PERCENT_SYNC = 0.04; Loading Loading @@ -857,6 +857,16 @@ public class SyncStorageEngine extends Handler { } } List<AuthorityInfo> getAllAuthorities() { List<AuthorityInfo> authorities = new ArrayList<AuthorityInfo>(); synchronized (mAuthorities) { for (int i = 0; i < mAuthorities.size(); i++) { authorities.add(mAuthorities.valueAt(i)); } } return authorities; } /** * Returns true if there is currently a sync operation being actively processed for the given * target. Loading Loading
services/core/java/com/android/server/content/SyncManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -453,10 +453,48 @@ public class SyncManager { } } } ensureDefaultPeriodicSyncsH(); } }); } private void ensureDefaultPeriodicSyncsH() { long defaultPeriod = SyncStorageEngine.DEFAULT_POLL_FREQUENCY_SECONDS; long defaultFlex = SyncStorageEngine.calculateDefaultFlexTime(defaultPeriod); List<AuthorityInfo> authorities = mSyncStorageEngine.getAllAuthorities(); List<SyncOperation> syncs = getAllPendingSyncsFromCache(); for (AuthorityInfo authority: authorities) { boolean foundPeriodicSync = false; for (SyncOperation op: syncs) { if (op.isPeriodic && authority.target.matchesSpec(op.target)) { foundPeriodicSync = true; break; } } if (!foundPeriodicSync) { EndPoint target = authority.target; final RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo = mSyncAdapters.getServiceInfo( SyncAdapterType.newKey( target.provider, target.account.type), target.userId); if (syncAdapterInfo == null) { continue; } scheduleSyncOperationH( new SyncOperation(target, syncAdapterInfo.uid, syncAdapterInfo.componentName.getPackageName(), SyncOperation.REASON_PERIODIC, SyncStorageEngine.SOURCE_PERIODIC, new Bundle(), syncAdapterInfo.type.allowParallelSyncs(), true /* periodic */, SyncOperation.NO_JOB_ID, defaultPeriod * 1000L, defaultFlex * 1000L) ); } } } private synchronized void verifyJobScheduler() { if (mJobScheduler != null) { return; Loading
services/core/java/com/android/server/content/SyncStorageEngine.java +11 −1 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ public class SyncStorageEngine extends Handler { private static final String XML_TAG_LISTEN_FOR_TICKLES = "listenForTickles"; /** Default time for a periodic sync. */ private static final long DEFAULT_POLL_FREQUENCY_SECONDS = 60 * 60 * 24; // One day static final long DEFAULT_POLL_FREQUENCY_SECONDS = 60 * 60 * 24; // One day /** Percentage of period that is flex by default, if no flexMillis is set. */ private static final double DEFAULT_FLEX_PERCENT_SYNC = 0.04; Loading Loading @@ -857,6 +857,16 @@ public class SyncStorageEngine extends Handler { } } List<AuthorityInfo> getAllAuthorities() { List<AuthorityInfo> authorities = new ArrayList<AuthorityInfo>(); synchronized (mAuthorities) { for (int i = 0; i < mAuthorities.size(); i++) { authorities.add(mAuthorities.valueAt(i)); } } return authorities; } /** * Returns true if there is currently a sync operation being actively processed for the given * target. Loading