天天看點

android 開發 監控資料,監控網絡連接配接狀态和網絡連接配接計量

您可以使用

确定您是否連接配接到網際網路

如果您未連接配接到網際網路,将無法運作基于網際網路資源的更新任務。如需安排需要網際網路連接配接的任務,建議使用 WorkManager。如需了解詳情,請參閱使用 WorkManager 安排任務。您還可以使用以下代碼段中顯示的方法以互動方式查詢活動網絡,以确定它是否已連接配接到網際網路。

Kotlin

val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

val activeNetwork: NetworkInfo? = cm.activeNetworkInfo

val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == trueJava

ConnectivityManager cm =

(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

boolean isConnected = activeNetwork != null &&

activeNetwork.isConnectedOrConnecting();

注意:getActiveNetworkInfo() 在 Android 10 中已棄用。對于以 Android 10(API 級别 29)及更高版本為目标平台的應用,請改用 NetworkCallbacks。

确定網際網路連接配接的類型

還可以确定目前可用的網際網路連接配接的類型。

裝置連接配接可由移動資料、WiMAX、WLAN 和以太網連接配接提供。如以下代碼示例所示,您可以通過查詢活動網絡的類型,根據可用帶寬改變應用的行為。

Kotlin

val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

val isMetered = cm.isActiveNetworkMetered()Java

ConnectivityManager cm =

(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

boolean isMetered = cm.isActiveNetworkMetered();

移動資料費用往往明顯高于 WLAN 和以太網費用。在使用按流量計費的網絡連接配接時,您應嘗試減少應用的資料流量消耗,甚至可以暫時不用,等連接配接到不按流量計費的網絡後再用。