diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/NetworkTypeObserver.java b/library/core/src/main/java/com/google/android/exoplayer2/util/NetworkTypeObserver.java index 488c7947cc..58501d63cc 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/NetworkTypeObserver.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/NetworkTypeObserver.java @@ -58,8 +58,25 @@ public final class NetworkTypeObserver { void onNetworkTypeChanged(@C.NetworkType int networkType); } + /* + * Static configuration that may need to be set at app startup time is located in a separate + * static Config class. This allows apps to set their desired config without incurring unnecessary + * class loading costs during startup. + */ + /** Configuration for {@link NetworkTypeObserver}. */ + public static final class Config { + + private static volatile boolean disable5GNsaDisambiguation; + + /** Disables logic to disambiguate 5G-NSA networks from 4G networks. */ + public static void disable5GNsaDisambiguation() { + disable5GNsaDisambiguation = true; + } + + private Config() {} + } + @Nullable private static NetworkTypeObserver staticInstance; - private static volatile boolean disable5GNsaDisambiguation; private final Handler mainHandler; // This class needs to hold weak references as it doesn't require listeners to unregister. @@ -70,11 +87,6 @@ public final class NetworkTypeObserver { @C.NetworkType private int networkType; - /** Disables logic to disambiguate 5G-NSA networks from 4G networks. */ - public static void disable5GNsaDisambiguation() { - disable5GNsaDisambiguation = true; - } - /** * Returns a network type observer instance. * @@ -223,7 +235,9 @@ public final class NetworkTypeObserver { @Override public void onReceive(Context context, Intent intent) { @C.NetworkType int networkType = getNetworkTypeFromConnectivityManager(context); - if (Util.SDK_INT >= 29 && !disable5GNsaDisambiguation && networkType == C.NETWORK_TYPE_4G) { + if (Util.SDK_INT >= 29 + && !Config.disable5GNsaDisambiguation + && networkType == C.NETWORK_TYPE_4G) { // Delay update of the network type to check whether this is actually 5G-NSA. try { // We can't access TelephonyManager getters like getServiceState() directly as they