重复闹钟和后台服务最常见的功能之一,是用来从网络上获取应用更新,存储数据或者执行大文件的下载。但是如果没有获得网络连接,或者连接的速度太慢以至于下载无法完成,那么就没有必要唤醒设备并执行那些更新等操作了。
我们可以使用ConnectivityManager来检查设备是否连接到网络,以及网络的类型(译注:通过网络的连接状况改变,相应的改变app的行为,减少无谓的操作,从而延长设备的续航能力)。
判断当前是否有网络连接
如果没有网络连接,那么就没有必要做那些需要联网的事情。下面的代码片段展示了如何通过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;
移动网络的使