确定是否连入了互联网
如果您未连入互联网,则无需安排基于互联网资源的更新。 下面这段代码展示了如何利用
ConnectivityManager
查询活动网络并确定其是否连入了互联网。
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnectedOrConnecting();
确定您的互联网连接类型
还可以确定当前可用的互联网连接类型。
设备连接可由移动数据、WiMAX、Wi-Fi 和以太网连接提供。如下所示,您可以通过查询活动网络的类型,根据可用带宽改变更新频率。
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
移动数据成本往往远高于 Wi-Fi,因此在大多数情况下,使用移动连接时应降低您的应用的更新频率。 同理,您应在接入 Wi-Fi 后再进行大数据量下载。
停用更新后,您必须侦听连接变化,以便在建立互联网连接后立即恢复更新。
监控连接变化
每当连接详情发生变化时,ConnectivityManager
便会广播 CONNECTIVITY_ACTION
("android.net.conn.CONNECTIVITY_CHANGE"
) 操作。您可以在清单文件中注册一个广播接收器,以便侦听这些变化和相应地恢复(或暂停)后台更新。
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
设备的连接变化可能非常频繁—您每次在移动数据与 Wi-Fi 之间切换时都会触发该广播。 因此,最好只在您之前暂停过更新或下载时监控该广播,以便恢复这些更新或下载。通常,只要在开始更新前检查互联网连接即已足够,如果没有任何连接,则再暂停其他更新直至连接恢复。