您可以使用
确定您是否連接配接到網際網路
如果您未連接配接到網際網路,将無法運作基于網際網路資源的更新任務。如需安排需要網際網路連接配接的任務,建議使用 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 和以太網費用。在使用按流量計費的網絡連接配接時,您應嘗試減少應用的資料流量消耗,甚至可以暫時不用,等連接配接到不按流量計費的網絡後再用。