# ConnectionMigrationOptions.Builder


```
public class ConnectionMigrationOptions.Builder
```

<br />

*** ** * ** ***

Builder for `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions`.

## Summary

| ### Public methods |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowNonDefaultNetworkUsage(boolean)(boolean enable)` Sets whether connections can be migrated to an alternate network when Cronet detects a degradation of the path currently in use. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowServerMigration(boolean)(boolean allowServerMigration)` Enables the possibility of migrating connections to an alternate server address at the server's request. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#build()()` Creates and returns the final `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions` instance, based on the values in this builder. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#enableDefaultNetworkMigration(boolean)( boolean enableDefaultNetworkConnectionMigration )` Enables the possibility of migrating connections on default network change. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#enablePathDegradationMigration(boolean)(boolean enable)` Enables the possibility of migrating connections if the current path is performing poorly. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#migrateIdleConnections(boolean)(boolean migrateIdleConnections)` Configures whether migration of idle connections should be enabled or not. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#retryPreHandshakeErrorsOnNonDefaultNetwork(boolean)( boolean retryPreHandshakeErrorsOnAlternateNetwork )` Sets whether connections with pre-handshake errors should be retried on an alternative network. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setIdleConnectionMigrationPeriodSeconds(long)( long idleConnectionMigrationPeriodSeconds )` Sets the maximum idle period for which connections will still be migrated, in seconds. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setMaxPathDegradingNonDefaultNetworkMigrationsCount(int)( int maxPathDegradingEagerMigrationsCount )` Sets the maximum number of migrations to the non-default network upon encountering path degradation for the existing connection. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setMaxTimeOnNonDefaultNetworkSeconds(long)( long maxTimeOnNonDefaultNetworkSeconds )` Sets the maximum period for which eagerly migrated connections should remain on the non-default network before they're migrated back. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setMaxWriteErrorNonDefaultNetworkMigrationsCount(int)( int maxWriteErrorEagerMigrationsCount )` Sets the maximum number of migrations to the non-default network upon encountering write errors. |

## Public methods

### allowNonDefaultNetworkUsage

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder allowNonDefaultNetworkUsage(boolean enable)
```

Sets whether connections can be migrated to an alternate network when Cronet detects a degradation of the path currently in use.

Note: This setting can result in requests being sent on non-default metered networks. Make sure you're using metered networks sparingly, and fine tune parameters like `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setMaxPathDegradingNonDefaultNetworkMigrationsCount(int)` and `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setMaxTimeOnNonDefaultNetworkSeconds(long)` to limit the time on non-default networks.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### allowServerMigration

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder allowServerMigration(boolean allowServerMigration)
```

Enables the possibility of migrating connections to an alternate server address at the server's request.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### build

```
public ConnectionMigrationOptions build()
```

Creates and returns the final `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions` instance, based on the values in this builder.

### enableDefaultNetworkMigration

```
public ConnectionMigrationOptions.Builder enableDefaultNetworkMigration(
    boolean enableDefaultNetworkConnectionMigration
)
```

Enables the possibility of migrating connections on default network change. If enabled, active QUIC connections will be migrated onto the new network when the platform indicates that the default network is changing.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

| See also |
|---|---|
| `https://developer.android.com/training/basics/network-ops/reading-network-state#listening-events` | [Android Network State](https://developer.android.com/training/basics/network-ops/reading-network-state#listening-events) |

### enablePathDegradationMigration

```
public ConnectionMigrationOptions.Builder enablePathDegradationMigration(boolean enable)
```

Enables the possibility of migrating connections if the current path is performing poorly.

Depending on other configuration, this can result to migrating the connections within the same default network, or to a non-default network.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

| See also |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowNonDefaultNetworkUsage(boolean)` |   |

### migrateIdleConnections

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder migrateIdleConnections(boolean migrateIdleConnections)
```

Configures whether migration of idle connections should be enabled or not.

If set to true, idle connections will be migrated too, as long as they haven't been idle for too long. The setting is shared for all connection migration types. The maximum idle period for which connections will still be migrated can be customized using `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#setIdleConnectionMigrationPeriodSeconds(long)`.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### retryPreHandshakeErrorsOnNonDefaultNetwork

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder retryPreHandshakeErrorsOnNonDefaultNetwork(
    boolean retryPreHandshakeErrorsOnAlternateNetwork
)
```

Sets whether connections with pre-handshake errors should be retried on an alternative network.

If true, a new connection may be established an alternate network if it fails on the default network before handshake is confirmed.

Note: similarly to `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowNonDefaultNetworkUsage(boolean)` this setting can result in requests being sent on non-default metered networks. Use with caution!

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### setIdleConnectionMigrationPeriodSeconds

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder setIdleConnectionMigrationPeriodSeconds(
    long idleConnectionMigrationPeriodSeconds
)
```

Sets the maximum idle period for which connections will still be migrated, in seconds. The setting is shared for all connection migration types.

Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#migrateIdleConnections(boolean)` is enabled.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### setMaxPathDegradingNonDefaultNetworkMigrationsCount

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder setMaxPathDegradingNonDefaultNetworkMigrationsCount(
    int maxPathDegradingEagerMigrationsCount
)
```

Sets the maximum number of migrations to the non-default network upon encountering path degradation for the existing connection. Counted cumulatively per network per connection.

Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowNonDefaultNetworkUsage(boolean)` is enabled.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### setMaxTimeOnNonDefaultNetworkSeconds

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder setMaxTimeOnNonDefaultNetworkSeconds(
    long maxTimeOnNonDefaultNetworkSeconds
)
```

Sets the maximum period for which eagerly migrated connections should remain on the non-default network before they're migrated back. This time is not cumulative - each migration off the default network for each connection measures and compares to this value separately.

Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowNonDefaultNetworkUsage(boolean)` is enabled.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |

### setMaxWriteErrorNonDefaultNetworkMigrationsCount

```
@ConnectionMigrationOptions.Experimental
public ConnectionMigrationOptions.Builder setMaxWriteErrorNonDefaultNetworkMigrationsCount(
    int maxWriteErrorEagerMigrationsCount
)
```

Sets the maximum number of migrations to the non-default network upon encountering write errors. Counted cumulatively per network per connection.

Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder#allowNonDefaultNetworkUsage(boolean)` is enabled.

| Returns |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/ConnectionMigrationOptions.Builder` | this builder for chaining |