From 9826e7f2920e0fb5032ae63666108689694d9f41 Mon Sep 17 00:00:00 2001 From: junyulai Date: Thu, 13 Dec 2018 12:47:51 +0800 Subject: [PATCH] Deprecate NetworkInfo Currently NetworkInfo is used by Apps to get information of network. However, to get such information, Apps need to poll NetworkInfo frequently from ConnectivityService. In order to increase the stability and reduce the maintain effort, all functionalities provided by NetworkInfo are targeted to be replaced or removed entirely. Apps should use ConnectivityManager.NetworkCallback instead, to get faster and more detailed updates from connectivity changes. Or, apps could use getNetworkCapabilities or getLinkProperties to get information synchronously, but should not mix the callbacks and synchronous methods together. Bug: 113629330 Test: atest FrameworksNetTests Change-Id: Ie8faf620958c3fa0a4a2f233b35b825de0e99ffc --- .../java/android/net/ConnectivityManager.java | 13 ++++++++++ core/java/android/net/NetworkInfo.java | 24 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 4714587449..49c3dc63e1 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -187,13 +187,19 @@ public class ConnectivityManager { * is for a network to which the connectivity manager was failing over * following a disconnect on another network. * Retrieve it with {@link android.content.Intent#getBooleanExtra(String,boolean)}. + * + * @deprecated See {@link NetworkInfo}. */ + @Deprecated public static final String EXTRA_IS_FAILOVER = "isFailover"; /** * The lookup key for a {@link NetworkInfo} object. This is supplied when * there is another network that it may be possible to connect to. Retrieve with * {@link android.content.Intent#getParcelableExtra(String)}. + * + * @deprecated See {@link NetworkInfo}. */ + @Deprecated public static final String EXTRA_OTHER_NETWORK_INFO = "otherNetwork"; /** * The lookup key for a boolean that indicates whether there is a @@ -214,7 +220,10 @@ public class ConnectivityManager { * may be passed up from the lower networking layers, and its * meaning may be specific to a particular network type. Retrieve * it with {@link android.content.Intent#getStringExtra(String)}. + * + * @deprecated See {@link NetworkInfo#getExtraInfo()}. */ + @Deprecated public static final String EXTRA_EXTRA_INFO = "extraInfo"; /** * The lookup key for an int that provides information about @@ -895,7 +904,9 @@ public class ConnectivityManager { * * @return a {@link NetworkInfo} object for the current default network * or {@code null} if no default network is currently active + * @deprecated See {@link NetworkInfo}. */ + @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public NetworkInfo getActiveNetworkInfo() { try { @@ -1079,7 +1090,9 @@ public class ConnectivityManager { * @return a {@link NetworkInfo} object for the requested * network or {@code null} if the {@code Network} * is not valid. + * @deprecated See {@link NetworkInfo}. */ + @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public NetworkInfo getNetworkInfo(Network network) { return getNetworkInfoForUid(network, Process.myUid(), false); diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java index 1a1d2d3342..89d99617df 100644 --- a/core/java/android/net/NetworkInfo.java +++ b/core/java/android/net/NetworkInfo.java @@ -28,7 +28,20 @@ import java.util.EnumMap; * Describes the status of a network interface. *

Use {@link ConnectivityManager#getActiveNetworkInfo()} to get an instance that represents * the current network connection. + * + * @deprecated Callers should instead use the {@link ConnectivityManager.NetworkCallback} API to + * learn about connectivity changes, or switch to use + * {@link ConnectivityManager#getNetworkCapabilities} or + * {@link ConnectivityManager#getLinkProperties} to get information synchronously. Keep + * in mind that while callbacks are guaranteed to be called for every event in order, + * synchronous calls have no such constraints, and as such it is unadvisable to use the + * synchronous methods inside the callbacks as they will often not offer a view of + * networking that is consistent (that is: they may return a past or a future state with + * respect to the event being processed by the callback). Instead, callers are advised + * to only use the arguments of the callbacks, possibly memorizing the specific bits of + * information they need to keep from one callback to another. */ +@Deprecated public class NetworkInfo implements Parcelable { /** @@ -52,7 +65,10 @@ public class NetworkInfo implements Parcelable { * FAILEDDISCONNECTED * BLOCKEDDISCONNECTED * + * + * @deprecated See {@link NetworkInfo}. */ + @Deprecated public enum State { CONNECTING, CONNECTED, SUSPENDED, DISCONNECTING, DISCONNECTED, UNKNOWN } @@ -61,7 +77,10 @@ public class NetworkInfo implements Parcelable { * The fine-grained state of a network connection. This level of detail * is probably of interest to few applications. Most should use * {@link android.net.NetworkInfo.State State} instead. + * + * @deprecated See {@link NetworkInfo}. */ + @Deprecated public enum DetailedState { /** Ready to start data connection setup. */ IDLE, @@ -463,8 +482,10 @@ public class NetworkInfo implements Parcelable { * Set the extraInfo field. * @param extraInfo an optional {@code String} providing addditional network state * information passed up from the lower networking layers. + * @deprecated See {@link NetworkInfo#getExtraInfo}. * @hide */ + @Deprecated public void setExtraInfo(String extraInfo) { synchronized (this) { this.mExtraInfo = extraInfo; @@ -488,7 +509,10 @@ public class NetworkInfo implements Parcelable { * Report the extra information about the network state, if any was * provided by the lower networking layers. * @return the extra information, or null if not available + * @deprecated Use other services e.g. WifiManager to get additional information passed up from + * the lower networking layers. */ + @Deprecated public String getExtraInfo() { synchronized (this) { return mExtraInfo;