`
lonkiss
  • 浏览: 1055 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

监控网络变化的广播接收者 重复调用 怎么解决

阅读更多
当没有信号时 会掉线, 我想实现恢复网络连接(wifi或者移动数据)时自动重连。 可是当我关闭wif再打开i时, 这个网络已连接 log打印了两次。。
造成两次启动联网线程。 有什么解决办法?

IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);


public class ConnectivityReceiver extends BroadcastReceiver {
         
        private static final String TAG = "ConnectivityReceiver";
 
        @Override
        public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub
                 ConnectivityManager connectivityManager = (ConnectivityManager)  context.getSystemService(Context.CONNECTIVITY_SERVICE);
                  
                NetworkInfo networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
 
                  
                  NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
                   
                if (activeNetworkInfo != null) {
                         Log.i(TAG,"Active Network Type  = " + activeNetworkInfo.getTypeName());
                                    Log.i(TAG,"Active Network Type  = " + activeNetworkInfo.getType());
                                    Log.i(TAG,"Active Network State = " + activeNetworkInfo.getState());
                    if (activeNetworkInfo.isConnected() ) {
                            Log.i(TAG,"网络已连接");
                           // TODO 登录账户
                    }
                } else {
                        Log.i(TAG,"网络不可用");
}
                  
        }
分享到:
评论

相关推荐

    Android之广播接收者

    总结来说,Android的广播接收者是系统通信的关键组成部分,开发者可以通过它实现许多后台任务和状态监控。理解广播的工作原理和使用方式,对于构建高效、稳定的应用至关重要。在实际开发中,应根据需求选择合适的...

    Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例

    在这个“Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例”中,我们将探讨如何利用BroadcastReceiver来监控手机中的短信和电话事件。 首先,我们需要创建一个BroadcastReceiver的子类,比如`...

    广播监控网络状态

    BroadcastReceiver是Android中的广播接收者,用于接收并处理系统广播事件,如网络状态改变。 **1. 创建BroadcastReceiver** 要监听网络状态变化,我们需要创建一个BroadcastReceiver,重写onReceive()方法。在这个...

    android网络监控设计源码

    1. **广播接收器(Broadcast Receiver)**:Android中的Broadcast Receiver是一种可以监听并接收系统或其他应用广播消息的组件。它是实现网络状态监控的基础。 2. **Observable 和 Observer 模式**:这是一种常见的...

    手机实时监控系统

    在Android平台上,这样的系统通常由一系列组件构成,包括服务(Service)、广播接收器(BroadcastReceiver)、内容提供者(ContentProvider)以及各种权限管理。在"手机实时监控系统"的上下文中,我们可以深入探讨...

    安卓四个组件之一 广播使用

    在Android操作系统中,四大组件是应用开发的核心,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。本篇文章将深入探讨四大组件之一的...

    anderoid广播

    广播接收器(BroadcastReceiver)需要实现`onReceive()`方法,当收到广播时,这个方法会被调用。在该方法中,开发者可以编写处理广播消息的代码。 除了常规广播,还有有序广播(Ordered Broadcast)和粘性广播...

    Qt调用jrtplib实现单播、多播和广播

    3. **注册接收者**:如果需要实现多播或广播,使用`addReceiver`方法为RTP会话添加接收地址。对于单播,直接设置发送目标地址即可。 4. **发送RTP数据**:使用`sendPacket`方法发送RTP数据包。数据包应包含RTP头部...

    android广播集合.txt

    2. **有序广播**:按照优先级顺序依次传递给各个接收者,在一个接收者处理完成后才会传递给下一个接收者。 #### 二、广播权限解析 根据提供的部分文件内容,我们可以了解到Android应用在发送或接收广播时可能涉及...

    Android应用源码之21.广播事件处理(2)-IT计算机-毕业设计.zip

    在毕业设计中,Android的广播事件处理可以应用于各种场景,如实时通知用户系统状态变化、设备连接状态的监控、后台服务的启动等。通过分析本项目提供的源码,学习者可以掌握如何设计和实现高效的广播系统,提高应用...

    Android使用jrtp实现语音广播功能

    在一对多的语音广播场景下,一个发送者(服务器)会将音频流通过RTP发送给多个接收者(客户端),每个客户端都可以接收到并播放这个音频流。 在Android上使用jrtp实现语音广播,你需要完成以下几个关键步骤: 1. *...

    BCB组播广播例子

    在IT行业中,组播是一种高效的网络通信方式,它允许数据发送者向多个接收者同时发送信息,而无需为每个接收者单独发送数据包。这种方式在需要向大量用户分发相同内容,如视频流媒体、在线会议和实时股票报价等场景中...

    MFC平台下组播的例子

    与广播不同,组播只将数据发送一次,但可以被多个接收者接收,这极大地减少了网络资源的消耗。 在MFC中实现组播功能,通常涉及以下几个关键步骤: 1. **配置网络接口**:首先,需要选择并配置合适的网络接口,以便...

    精彩编程与编程技巧-在WindowsNT网络中广播消息...

    ### 知识点:在Windows NT网络中广播消息 #### 一、背景介绍 Windows NT作为微软推出的一款操作系统,以其强大的功能和稳定性受到广大企业和个人用户的欢迎。在Windows NT环境中,进行网络通信是一项非常重要的技术...

    C++ ARP监控小程序

    在这个ARP监控小程序中,C++将被用来编写底层的网络数据包捕获和解析代码,以及处理系统调用和文件操作。 **3. 网卡信息获取** 在Windows系统中,可以使用WinPCap或Npcap库来访问网络接口信息,包括网卡的名称、IP...

    USB的监控1

    窗口类定义了窗口的行为和外观,而创建的窗口则是消息的实际接收者。 ```cpp WNDCLASS wc; ZeroMemory(&wc, sizeof(wc)); wc.lpszClassName = TEXT("myusbmsg"); wc.lpfnWndProc = WndProc; // 设置窗口过程 ...

    网络连接状态检测.zip

    2. **BroadcastReceiver**:Android系统会广播网络状态的变化,开发者可以注册一个BroadcastReceiver来监听这些变化。当网络连接建立或断开时,BroadcastReceiver的onReceive()方法会被调用,从而允许应用做出相应的...

    安卓Android源码——监控别人的行踪.zip

    7. **服务与广播接收者**:为了在后台运行,监控功能可能涉及到服务(Service)的使用,以及广播接收者(BroadcastReceiver)来监听特定事件。 8. **数据存储**:监控数据可能需要存储在本地(SQLite数据库、文件...

    判断网络状态demo

    当网络状态发生变化时,BroadcastReceiver会接收到广播并执行相应的操作: ```java IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(networkReceiver, ...

Global site tag (gtag.js) - Google Analytics