# NetworkTypeObserver

Artifact: [androidx.media3:media3-common](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/common/util/NetworkTypeObserver.java+class:androidx.media3.common.util.NetworkTypeObserver)

*** ** * ** ***


```
@UnstableApi
public final class NetworkTypeObserver
```

<br />

*** ** * ** ***

Observer for network type changes.

`https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#register(androidx.media3.common.util.NetworkTypeObserver.Listener)` listeners are informed at registration and whenever the network type changes.

The current network type can also be `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#getNetworkType()` without registration.

## Summary

| ### Nested types |
|---|
| `public interface https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver.Listener` A listener for network type changes. |

| ### Public fields |
|---|---|
| `int` | `@https://developer.android.com/reference/androidx/annotation/GuardedBy(value = "lock") @https://developer.android.com/reference/androidx/media3/common/C.NetworkType https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#networkType()` |

| ### Public methods |
|---|---|
| `synchronized static https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver` | `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#getInstance(android.content.Context)(https://developer.android.com/reference/android/content/Context.html context)` Returns a network type observer instance. |
| `int` | `@https://developer.android.com/reference/androidx/media3/common/C.NetworkType https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#getNetworkType()()` Returns the current network type. |
| `void` | `@https://checkerframework.org/api/com/google/errorprone/annotations/InlineMe.html(replacement = "this.register(listener, new Handler(Looper.getMainLooper())::post)", imports = [""android.os.Handler"", ""android.os.Looper""]) [register](https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#register(androidx.media3.common.util.NetworkTypeObserver.Listener))(https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver.Listener listener)` **This method is deprecated.** Use `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#register(androidx.media3.common.util.NetworkTypeObserver.Listener,java.util.concurrent.Executor)` instead. <br /> |
| `void` | `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#register(androidx.media3.common.util.NetworkTypeObserver.Listener,java.util.concurrent.Executor)(https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver.Listener listener, https://developer.android.com/reference/java/util/concurrent/Executor.html executor)` Registers a listener. |
| `synchronized static void` | `@https://developer.android.com/reference/androidx/annotation/VisibleForTesting https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#resetForTests()()` Resets the network type observer for tests. |

## Public fields

### networkType

```
@GuardedBy(value = "lock")
@C.NetworkType
public int networkType
```

## Public methods

### getInstance

```
synchronized public static NetworkTypeObserver getInstance(Context context)
```

Returns a network type observer instance.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | A `https://developer.android.com/reference/android/content/Context.html`. |

### getNetworkType

```
@C.NetworkType
public int getNetworkType()
```

Returns the current network type.

### register

```
@InlineMe(replacement = "this.register(listener, new Handler(Looper.getMainLooper())::post)", imports = [""android.os.Handler"", ""android.os.Looper""])
public void [register](https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#register(androidx.media3.common.util.NetworkTypeObserver.Listener))(NetworkTypeObserver.Listener listener)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver#register(androidx.media3.common.util.NetworkTypeObserver.Listener,java.util.concurrent.Executor)` instead.

### register

```
public void register(NetworkTypeObserver.Listener listener, Executor executor)
```

Registers a listener.

The current network type will be reported to the listener after registration.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver.Listener listener` | The `https://developer.android.com/reference/androidx/media3/common/util/NetworkTypeObserver.Listener`. |
| `https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | The `https://developer.android.com/reference/java/util/concurrent/Executor.html` to call the `listener` on. |

### resetForTests

```
@VisibleForTesting
synchronized public static void resetForTests()
```

Resets the network type observer for tests.