Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/content/SyncRequest.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/content/SyncRequest.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/content/SyncRequest.Builder#inhmethods)

# SyncRequest.Builder

*** ** * ** ***

` public static class SyncRequest.Builder `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.content.SyncRequest.Builder |

<br />

*** ** * ** ***

Builder class for a `https://developer.android.com/reference/android/content/SyncRequest`. As you build your SyncRequest this class will also perform validation.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder#Builder()() ` |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/content/SyncRequest` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#build()() ` Performs validation over the request and throws the runtime exception `IllegalArgumentException` if this validation fails. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setDisallowMetered(boolean)(boolean disallow) ` Will throw an `IllegalArgumentException` if called and `https://developer.android.com/reference/android/content/SyncRequest.Builder#setIgnoreSettings(boolean)` has already been called. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setExpedited(boolean)(boolean expedited) ` An expedited sync runs immediately and can preempt other non-expedited running syncs. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setExtras(android.os.Bundle)(https://developer.android.com/reference/android/os/Bundle bundle) ` Developer-provided extras handed back when sync actually occurs. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setIgnoreBackoff(boolean)(boolean ignoreBackoff) ` Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_IGNORE_BACKOFF`. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setIgnoreSettings(boolean)(boolean ignoreSettings) ` Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_IGNORE_SETTINGS`. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setManual(boolean)(boolean isManual) ` Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_MANUAL`. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setNoRetry(boolean)(boolean noRetry) ` Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_DO_NOT_RETRY`. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setRequiresCharging(boolean)(boolean requiresCharging) ` Specify whether the sync requires the phone to be plugged in. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setScheduleAsExpeditedJob(boolean)(boolean scheduleAsExpeditedJob) ` Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_SCHEDULE_AS_EXPEDITED_JOB`. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#setSyncAdapter(android.accounts.Account,%20java.lang.String)(https://developer.android.com/reference/android/accounts/Account account, https://developer.android.com/reference/java/lang/String authority) ` Specify an authority and account for this transfer. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#syncOnce()() ` Request that a sync occur immediately. |
| ` https://developer.android.com/reference/android/content/SyncRequest.Builder` | ` https://developer.android.com/reference/android/content/SyncRequest.Builder#syncPeriodic(long,%20long)(long pollFrequency, long beforeSeconds) ` Build a periodic sync. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Public constructors

### Builder

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder ()
```

<br />

<br />

## Public methods

### build

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest build ()
```

Performs validation over the request and throws the runtime exception `IllegalArgumentException` if this validation fails.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest` | a SyncRequest with the information contained within this builder. <br /> |

### setDisallowMetered

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setDisallowMetered (boolean disallow)
```

Will throw an `IllegalArgumentException` if called and `https://developer.android.com/reference/android/content/SyncRequest.Builder#setIgnoreSettings(boolean)` has already been called.

<br />

| Parameters ||
|---|---|
| `disallow` | `boolean`: true to allow this transfer on metered networks. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setExpedited

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setExpedited (boolean expedited)
```

An expedited sync runs immediately and can preempt other non-expedited running syncs. Not valid for periodic sync and will throw an `IllegalArgumentException` in `https://developer.android.com/reference/android/content/SyncRequest.Builder#build()`.

<br />

| Parameters ||
|---|---|
| `expedited` | `boolean`: whether to run expedited. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setExtras

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setExtras (Bundle bundle)
```

Developer-provided extras handed back when sync actually occurs. This bundle is copied into the SyncRequest returned by `https://developer.android.com/reference/android/content/SyncRequest.Builder#build()`. Example:

```
  String[] syncItems = {"dog", "cat", "frog", "child"};
  SyncRequest.Builder builder =
    new SyncRequest.Builder()
      .setSyncAdapter(dummyAccount, dummyProvider)
      .syncOnce();

  for (String syncData : syncItems) {
    Bundle extras = new Bundle();
    extras.setString("data", syncData);
    builder.setExtras(extras);
    ContentResolver.sync(builder.build()); // Each sync() request creates a unique sync.
  }
```
Only values of the following types may be used in the extras bundle:

- Integer
- Long
- Boolean
- Float
- Double
- String
- Account
- null

If any data is present in the bundle not of this type, build() will throw a runtime exception.

<br />

<br />

| Parameters ||
|---|---|
| `bundle` | `Bundle`: extras bundle to set. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setIgnoreBackoff

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setIgnoreBackoff (boolean ignoreBackoff)
```

Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_IGNORE_BACKOFF`. Ignoring back-off will force the sync scheduling process to ignore any back-off that was the result of a failed sync, as well as to invalidate any `https://developer.android.com/reference/android/content/SyncResult#delayUntil` value that may have been set by the adapter. Successive failures will not honor this flag. Not valid for periodic sync and will throw an `IllegalArgumentException` in `https://developer.android.com/reference/android/content/SyncRequest.Builder#build()`.

<br />

| Parameters ||
|---|---|
| `ignoreBackoff` | `boolean`: ignore back off settings. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setIgnoreSettings

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setIgnoreSettings (boolean ignoreSettings)
```

Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_IGNORE_SETTINGS`. Not valid for periodic sync and will throw an `IllegalArgumentException` in `https://developer.android.com/reference/android/content/SyncRequest.Builder#build()`.

Throws `IllegalArgumentException` if called and `https://developer.android.com/reference/android/content/SyncRequest.Builder#setDisallowMetered(boolean)` has been set.

<br />

| Parameters ||
|---|---|
| `ignoreSettings` | `boolean`: true to ignore the sync automatically settings. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setManual

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setManual (boolean isManual)
```

Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_MANUAL`. Not valid for periodic sync and will throw an `IllegalArgumentException` in `https://developer.android.com/reference/android/content/SyncRequest.Builder#build()`.

<br />

| Parameters ||
|---|---|
| `isManual` | `boolean`: User-initiated sync or not. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setNoRetry

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setNoRetry (boolean noRetry)
```

Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_DO_NOT_RETRY`. A one-off sync operation that fails will be retried with exponential back-off unless this is set to false. Not valid for periodic sync and will throw an `IllegalArgumentException` in build().

<br />

| Parameters ||
|---|---|
| `noRetry` | `boolean`: true to not retry a failed sync. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setRequiresCharging

Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setRequiresCharging (boolean requiresCharging)
```

Specify whether the sync requires the phone to be plugged in.

<br />

| Parameters ||
|---|---|
| `requiresCharging` | `boolean`: true if sync requires the phone to be plugged in. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### setScheduleAsExpeditedJob

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setScheduleAsExpeditedJob (boolean scheduleAsExpeditedJob)
```

Convenience function for setting `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_SCHEDULE_AS_EXPEDITED_JOB`.

Not to be confused with `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_EXPEDITED`.

Not valid for periodic syncs, expedited syncs, and syncs that require charging - an `IllegalArgumentException` will be thrown in `https://developer.android.com/reference/android/content/SyncRequest.Builder#build()`.

<br />

| Parameters ||
|---|---|
| `scheduleAsExpeditedJob` | `boolean`: whether to schedule as an expedited job. Default false. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | This value cannot be `null`. <br /> |

### setSyncAdapter

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder setSyncAdapter (Account account, 
                String authority)
```

Specify an authority and account for this transfer.

<br />

| Parameters ||
|---|---|
| `account` | `Account`: Account to sync. Can be null unless this is a periodic sync, for which verification by the ContentResolver will fail. If a sync is performed without an account, the <br /> |
| `authority` | `String`: A String identifying the content provider to be synced. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### syncOnce

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder syncOnce ()
```

Request that a sync occur immediately. Example

```
    SyncRequest.Builder builder = (new SyncRequest.Builder()).syncOnce();
```

<br />

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |

### syncPeriodic

Added in [API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SyncRequest.Builder syncPeriodic (long pollFrequency, 
                long beforeSeconds)
```

Build a periodic sync. Either this or syncOnce() **must** be called for this builder. Syncs are identified by target `https://developer.android.com/reference/android/provider/package-summary` and by the contents of the extras bundle. You cannot reuse the same builder for one-time syncs after having specified a periodic sync (by calling this function). If you do, an `IllegalArgumentException` will be thrown.

The bundle for a periodic sync can be queried by applications with the correct permissions using `https://developer.android.com/reference/android/content/ContentResolver#getPeriodicSyncs(android.accounts.Account,%20java.lang.String)`, so no sensitive data should be transferred here. Example usage.

```
    Request a periodic sync every 5 hours with 20 minutes of flex.
    SyncRequest.Builder builder =
        (new SyncRequest.Builder()).syncPeriodic(5 * HOUR_IN_SECS, 20 * MIN_IN_SECS);

    Schedule a periodic sync every hour at any point in time during that hour.
    SyncRequest.Builder builder =
        (new SyncRequest.Builder()).syncPeriodic(1 * HOUR_IN_SECS, 1 * HOUR_IN_SECS);
```
N.B.: Periodic syncs are not allowed to have any of `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_DO_NOT_RETRY`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_IGNORE_BACKOFF`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_IGNORE_SETTINGS`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_INITIALIZE`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_FORCE`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_EXPEDITED`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_MANUAL`, `https://developer.android.com/reference/android/content/ContentResolver#SYNC_EXTRAS_SCHEDULE_AS_EXPEDITED_JOB` set to true. If any are supplied then an `IllegalArgumentException` will be thrown.

<br />

<br />

| Parameters ||
|---|---|
| `pollFrequency` | `long`: the amount of time in seconds that you wish to elapse between periodic syncs. A minimum period of 1 hour is enforced. <br /> |
| `beforeSeconds` | `long`: the amount of flex time in seconds before `pollFrequency` that you permit for the sync to take place. Must be less than `pollFrequency` and greater than MAX(5% of `pollFrequency`, 5 minutes) <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/SyncRequest.Builder` | <br /> |