zoukankan      html  css  js  c++  java
  • ConnectivityManager 确定和监控网络连接状态


    http://blog.csdn.net/hknock/article/details/8477141


    重复提醒和后台服务最常见的用途之一,就是为来自互联网资源的应用数据、缓存数据安排定期更新或执行长时间运行的下载任务。但是,如果您没有连接互联网,或因连接过慢而无法完成下载,那就根本没必要唤醒设备并安排更新了。

    您可以使用 ConnectivityManager 查看是否确实已连接互联网,如果已连接,您还可以了解当前的连接类型。

    确定是否已连接互联网


    如果设备未连接互联网,就没有必要根据互联网资源安排更新了。以下代码段说明如何使用ConnectivityManager 查询有效网络并确定该网络是否已连接互联网。

    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
     
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = 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 之间相互切换,系统就会触发此广播。因此比较合适的做法是,仅当之前暂停了更新或下载时才监控此广播,以便恢复更新或下载。通常,您只需在开始更新前检查互联网连接情况即可,如果未连接互联网,请暂停后续更新,直到连接恢复。


  • 相关阅读:
    VMware搭建VMware ESXi 6.7
    77. Combinations
    47. Permutations II
    system design
    37. Sudoku Solver
    12月9日学习日志
    12月8日学习日志
    12月7日学习日志
    12月6日学习日志
    12月5日学习日志
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646114.html
Copyright © 2011-2022 走看看