# DnsOptions.Builder


```
public final class DnsOptions.Builder
```

<br />

*** ** * ** ***

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

## Summary

| ### Public methods |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#build()()` Creates and returns the final `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions` instance, based on the values in this builder. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#enableStaleDns(boolean)(boolean enable)` Sets whether to use stale DNS results at all. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#persistHostCache(boolean)(boolean persistHostCache)` Sets whether the DNS cache should be persisted to disk. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#preestablishConnectionsToStaleDnsResults(boolean)(boolean enable)` Sets whether Cronet should use stale cached DNS records to pre-establish connections. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `@https://developer.android.com/reference/androidx/annotation/RequiresApi.html(api = https://developer.android.com/reference/android/os/VERSION_CODES.html#O) https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setPersistDelay(java.time.Duration)(@https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/reference/java/time/Duration.html persistToDiskPeriod)` Same as `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setPersistHostCachePeriodMillis(long)` but using `https://developer.android.com/reference/java/time/Duration.html`. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setPersistHostCachePeriodMillis(long)(long persistHostCachePeriodMillis)` Sets the minimum period between subsequent writes to disk for DNS cache persistence. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Experimental https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setStaleDnsOptions(org.chromium.net.DnsOptions.StaleDnsOptions.Builder)( https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.StaleDnsOptions.Builder staleDnsOptionsBuilder )` |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setStaleDnsOptions(org.chromium.net.DnsOptions.StaleDnsOptions)(https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.StaleDnsOptions staleDnsOptions)` Sets detailed configuration for stale DNS. |
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#useBuiltInDnsResolver(boolean)(boolean enable)` |

## Public methods

### build

```
public DnsOptions build()
```

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

### enableStaleDns

```
public DnsOptions.Builder enableStaleDns(boolean enable)
```

Sets whether to use stale DNS results at all.

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

### persistHostCache

```
public DnsOptions.Builder persistHostCache(boolean persistHostCache)
```

Sets whether the DNS cache should be persisted to disk.

Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetEngine.Builder#setStoragePath(java.lang.String)` is set.

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

### preestablishConnectionsToStaleDnsResults

```
@DnsOptions.Experimental
public DnsOptions.Builder preestablishConnectionsToStaleDnsResults(boolean enable)
```

Sets whether Cronet should use stale cached DNS records to pre-establish connections.

If enabled, Cronet will optimistically pre-establish connections to servers that matched the hostname at some point in the past and were cached but the cache entry expired. Such connections won't be used further until a new DNS lookup confirms the cached record was up to date.

To use cached DNS records straight away, use `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#enableStaleDns(boolean)` and `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.StaleDnsOptions` configuration options.

This option may not be available for all networking protocols.

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

### setPersistDelay

```
@RequiresApi(api = VERSION_CODES.O)
public DnsOptions.Builder setPersistDelay(@NonNull Duration persistToDiskPeriod)
```

Same as `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setPersistHostCachePeriodMillis(long)` but using `https://developer.android.com/reference/java/time/Duration.html`.

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

### setPersistHostCachePeriodMillis

```
public DnsOptions.Builder setPersistHostCachePeriodMillis(long persistHostCachePeriodMillis)
```

Sets the minimum period between subsequent writes to disk for DNS cache persistence.

Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#persistHostCache(boolean)` is set to true.

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

### setStaleDnsOptions

```
@DnsOptions.Experimental
public DnsOptions.Builder setStaleDnsOptions(
    DnsOptions.StaleDnsOptions.Builder staleDnsOptionsBuilder
)
```

| See also |
|---|---|
| `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#setStaleDnsOptions(org.chromium.net.DnsOptions.StaleDnsOptions)` |   |

### setStaleDnsOptions

```
public DnsOptions.Builder setStaleDnsOptions(DnsOptions.StaleDnsOptions staleDnsOptions)
```

Sets detailed configuration for stale DNS. Only relevant if `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/DnsOptions.Builder#enableStaleDns(boolean)` is set.

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

### useBuiltInDnsResolver

```
public DnsOptions.Builder useBuiltInDnsResolver(boolean enable)
```