如何在 Android 应用程序运行时在后台持续检查互联网连接

2023-11-23

我想在 Android 应用程序运行时在后台持续检查互联网连接。我的意思是从申请开始到申请结束。我该怎么做?应该采取什么方法?


我知道我回答这个问题已经晚了。 但这里有一种在 Activity/Fragment 中持续监视网络连接的方法。

我们将使用网络回调来监视活动/片段中的连接

首先,在类中声明两个变量

// to check if we are connected to Network
boolean isConnected = true;

// to check if we are monitoring Network
private boolean monitoringConnectivity = false;

接下来,我们将编写网络回调方法

private ConnectivityManager.NetworkCallback connectivityCallback
            = new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            isConnected = true;
            LogUtility.LOGD(TAG, "INTERNET CONNECTED");
        }

        @Override
        public void onLost(Network network) {
            isConnected = false;
            LogUtility.LOGD(TAG, "INTERNET LOST");
        }
    };

现在,既然我们已经编写了回调,我们现在将编写一个方法来监视我们的网络连接,在这个方法中,我们将注册我们的 NetworkCallback。

// Method to check network connectivity in Main Activity
    private void checkConnectivity() {
        // here we are getting the connectivity service from connectivity manager
        final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(
                Context.CONNECTIVITY_SERVICE);

        // Getting network Info
        // give Network Access Permission in Manifest
        final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();

        // isConnected is a boolean variable
        // here we check if network is connected or is getting connected
        isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();

        if (!isConnected) {
            // SHOW ANY ACTION YOU WANT TO SHOW
            // WHEN WE ARE NOT CONNECTED TO INTERNET/NETWORK
            LogUtility.LOGD(TAG, " NO NETWORK!");
// if Network is not connected we will register a network callback to  monitor network
            connectivityManager.registerNetworkCallback(
                    new NetworkRequest.Builder()
                            .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                            .build(), connectivityCallback);
            monitoringConnectivity = true;
        }

    }

我们所有的工作都快完成了,我们只需要调用我们的 Activity/Fragment 的 onResume() 中的 checkConnectivity() 方法

  @Override
    protected void onResume() {
        super.onResume();
        checkConnectivity();
    }

*在 Activity/Fragment 的方法 onPause() 中取消注册 NetworkCallback *

   @Override
    protected void onPause() {
        // if network is being moniterd then we will unregister the network callback
        if (monitoringConnectivity) {
            final ConnectivityManager connectivityManager
                    = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            connectivityManager.unregisterNetworkCallback(connectivityCallback);
            monitoringConnectivity = false;
        }
        super.onPause();
    }

就是这样,只需添加此代码,其中您的 Activity/Fragment 的每个类都需要监视网络!并且不要忘记取消注册它!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 应用程序运行时在后台持续检查互联网连接 的相关文章

随机推荐

  • 从内存加载向量的更好方法。 (铛)

    我正在编写一个测试程序 以适应 OpenCL 样式向量的 Clang 语言扩展 我可以让代码正常工作 但我在获取其某一方面时遇到了问题 我似乎无法弄清楚如何让 clang 很好地从标量数组加载向量 目前我必须做类似的事情 byte16 va
  • 使用InstallShield注册COM对象

    我正在使用InstallShield 2011 我有一个需要在安装过程中注册的COM对象 我似乎找不到任何地方可以指导您如何执行此操作 有人有什么想法吗 Thanks EDIT 创建一个组件并向其中添加 COM dll ocx 然后右键单击
  • 说明 C# 中 volatile 关键字的用法

    我想编写一个小程序来直观地说明volatile关键词 理想情况下 它应该是一个对非易失性静态字段执行并发访问的程序 并因此获得不正确的行为 在同一程序中添加 volatile 关键字应该可以解决该问题 这是我没能实现的 即使尝试多次 启用优
  • layout_constraintWidth_default="wrap" 已弃用,有其他选择吗?

    我在textview中使用这个layout constraintWidth default wrap 来保持textview内容包裹 在它的右侧有imageview 随着textview中的文本增加 textview区域将会增长 从而将im
  • 如何防止 Excel 自动复制表格中的公式?

    我使用的是 Excel 2016 我有一个带有标题的表格 当我插入公式时 Excel 会自动将该公式复制到列中的所有其他单元格 虽然这通常没问题 但它错误地计算了表标题 我以为我可以更改顶行以排除标题 但 Excel 更新了我不想要的列的其
  • Neo4j Cypher:如何从路径中解压节点以允许进一步匹配?

    这个问题是问题的后续问题here 我有一个带有循环链表的图 请参阅此处的示例 链表中的每个节点都指向一个User 查询列表时 我必须使用路径语句 因为列表是循环的 并且我不想检索从 u USER 节点开始的节点 为了获取感兴趣的节点 我的查
  • mmap 返回无法分配内存,即使有足够的内存

    我正在使用 leveldb 进行压力测试 In util env poisx cc NewRandomAccessFile void base mmap NULL size PROT READ MAP SHARED fd 0 插入 300
  • 如何使用 cmake 函数 get_precessions 和 get_filename_component 进行目标依赖项安装?

    我们已经建立了一个具有外部共享库依赖项的 cmake 项目 我们想要使用 CPack 打包项目的二进制文件和依赖项 然而 当我们尝试查找目标的依赖关系时 我们在 Windows 和 Linux 系统上得到了不同的结果 我们查看了 CMake
  • Haskell:如何为依赖于参数的东西编写“Monoid”实例

    我正在为大学开发一个小型图书馆 它可以在循环群 像 3 11 10 11 gt 2 11 整数 n 在加法下清楚地形成一个幺半群 0 n 作为单位元 然而 只有当相加的两个操作数的模相同时 加法才有意义 a n b n 有道理 同时a n
  • 更新 jar 中的文件会抛出 ZipException

    我正在尝试使用以下命令更新现有 jar 中的文件 在本例中为 antlr jar uf antlrworks 1 2 3 jar org antlr codegen templates Java Java stg 但我收到以下消息 java
  • 获取 scikit-learn tf-idf 矩阵中的文档名称

    我已经创建了一个 tf idf 矩阵 但现在我想检索每个文档的前 2 个单词 我想传递文档 ID 它应该给我前 2 个单词 现在 我有这个样本数据 from sklearn feature extraction text import Tf
  • 如何使用 jquery ajax 调用 google 地图地理编码服务

    我正在尝试从谷歌地图地理编码 api 获取 LatLng 我的代码如下 地址值为 纽约 纽约 ajax url http maps googleapis com maps api geocode json data sensor false
  • 在 .Net 4.0 中使用穷人的 async/await 结构实现异步超时

    动机 C 5 0 async await 构造非常棒 但不幸的是 Microsoft 仅展示了 NET 4 5 和 VS 2012 的候选版本 这些技术在我们的项目中得到广泛采用还需要一些时间 在史蒂芬 图布的书中异步方法 C 迭代器和任务
  • 从美国格式转换为英国格式

    如何将以下内容修改为 D M YYYY 8 7 20 6 20 PM 8 17 20 4 24 PM 目前是 M D YY 这是我所做的无济于事 VALUE LEFT A2 FIND A2 1 1 这是提取日期部分 因为 Excel 将其视
  • PyDev 交互式控制台

    当尝试在 pydev 上打开交互式控制台时 出现错误 初始化控制台时出错 连接到控制台时出现意外错误 无法从 pydev 控制台接收合适的 Hello 响应 收到的最后一条消息 HTTP 服务器返回意外状态 服务不可用使用的命令行 D ac
  • 如何在 Go 中编写待处理测试

    是否有合法的方法来写下我打算稍后编写完整测试功能的测试用例 就像 mochajs 的待测试一样 包文档描述这样的例子testing T Skip 如果调用 T 和 B 的 Skip 方法不适用 则可以跳过测试和基准测试 func TestT
  • 无法在 Angular 2 TypeScript 应用程序中找到 Typings.d.ts 并声明模块

    我是 Typescript 和 Angular 2 的新手 我需要安装 npm 依赖项并在我的 Angular 2 应用程序中使用它 依赖关系是https www npmjs com package ng2 stomp service 我已
  • 如何使用 python SAX 解析器获取标签之间的文本?

    我需要的只是获取相应标签的文本并将其保存到数据库中 由于 xml 文件很大 4 5GB 我使用 sax 我用的是人物方法获取文本并将其放入字典中 但是 当我在打印文本时结束元素方法我得到一个新行而不是文本 这是我的代码 def charac
  • 在 R 中绘制最小二乘回归图中的垂直偏移

    I m interested in making a plot with a least squares regression line and line segments connecting the datapoints to the
  • 如何在 Android 应用程序运行时在后台持续检查互联网连接

    我想在 Android 应用程序运行时在后台持续检查互联网连接 我的意思是从申请开始到申请结束 我该怎么做 应该采取什么方法 我知道我回答这个问题已经晚了 但这里有一种在 Activity Fragment 中持续监视网络连接的方法 我们将