网络状态监听

网络状态监听

定义一个广播接收器和状态变化接口

  1. publicclassNetBroadcastReceiverextendsBroadcastReceiver{
  2. publicstaticArrayList<NetEventHandler> mListeners =newArrayList<NetEventHandler>();
  3. privatestaticString NET_CHANGE_ACTION ="android.net.conn.CONNECTIVITY_CHANGE";
  4. @Override
  5. publicvoid onReceive(Context context,Intent intent){
  6. Log.i("dsc","dsc");
  7. if(intent.getAction().equals(NET_CHANGE_ACTION)){
  8. MainActivity.mNetWorkState =NetUtil.getNetworkState(context);
  9. if(mListeners.size()>0)//通知接口完成加载
  10. for(NetEventHandler handler : mListeners){
  11. handler.onNetChange();
  12. }
  13. }
  14. }
  15. publicinterfaceNetEventHandler{
  16. publicvoid onNetChange();
  17. }
  18. }

网络状态工具类

  1. publicclassNetUtil{
  2. publicstaticfinalint NETWORN_NONE =0;
  3. publicstaticfinalint NETWORN_WIFI =1;
  4. publicstaticfinalint NETWORN_MOBILE =2;
  5. publicstaticint getNetworkState(Context context){
  6. ConnectivityManager connManager =(ConnectivityManager) context
  7. .getSystemService(Context.CONNECTIVITY_SERVICE);
  8. // Wifi
  9. State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
  10. .getState();
  11. if(state ==State.CONNECTED || state ==State.CONNECTING){
  12. return NETWORN_WIFI;
  13. }
  14. // 3G
  15. state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
  16. .getState();
  17. if(state ==State.CONNECTED || state ==State.CONNECTING){
  18. return NETWORN_MOBILE;
  19. }
  20. return NETWORN_NONE;
  21. }
  22. }

主要实现

  1. publicclassMainActivityextendsAppCompatActivityimplementsNetBroadcastReceiver.NetEventHandler{
  2. publicstaticint mNetWorkState;
  3. privateNetBroadcastReceiver netReceiver;//网络状态监测
  4. privateboolean netState =false;
  5. @Override
  6. protectedvoid onCreate(Bundle savedInstanceState){
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. //注册网络监听广播
  10. regist();
  11. }
  12. @Override
  13. publicvoid onDestroy(){
  14. super.onDestroy();
  15. Log.e("myLog","TaskListFragment执行销毁");
  16. unregisterReceiver(netReceiver);
  17. }
  18. /**
  19. * 注册广播
  20. */
  21. privatevoid regist(){
  22. netReceiver =newNetBroadcastReceiver();
  23. IntentFilter filter =newIntentFilter();
  24. filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
  25. registerReceiver(netReceiver, filter);
  26. NetBroadcastReceiver.mListeners.add(this);
  27. }
  28. @Override
  29. publicvoid onNetChange(){
  30. if(getApplicationContext()==null){
  31. return;
  32. }
  33. if(NetUtil.getNetworkState(this)==NetUtil.NETWORN_NONE){//没有网络
  34. netState =false;
  35. Toast.makeText(this,"你的网络已断开连接,请检查网络!",Toast.LENGTH_SHORT).show();
  36. }elseif(NetUtil.getNetworkState(this)==NetUtil.NETWORN_WIFI){//wifi网络
  37. netState =true;
  38. Toast.makeText(this,"你目前是wifi网络!",Toast.LENGTH_SHORT).show();
  39. }else{//手机网络
  40. netState =true;
  41. Toast.makeText(this,"你目前是手机网络!",Toast.LENGTH_SHORT).show();
  42. }
  43. }
  44. }

AndroidManifest注册

  1. <receiverandroid:name=".NetBroadcastReceiver"/>

来自为知笔记(Wiz)

时间: 2024-11-13 08:20:32

网络状态监听的相关文章

ThinkAndroid框架 网络状态监听原理

ThinkAndroid框架 网络状态监听原理,有需要的朋友可以参考下. 现在用到网络监听的地方越来越广泛,这里提供下ThinkAndroid里的实现方法,还是根据功能原理倒着给出代码: 1.网络状态会发出广播,监听网络状态肯定通过广播接收者实现,广播接受者: /** * @Title NetworkStateReceiver * @Package com.ta.util.netstate * @Description 是一个检测网络状态改变的,需要配置 <receiver * android:

关于网络状态监听实时,创建单例网络监测(非实时)

#pragma mark 网络状态监测 -(void)checkNetworkStatus{ //创建一个用于测试的url NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"]; AFHTTPRequestOperationManager *operationManager=[[AFHTTPRequestOperationManager alloc]initWithBaseURL:url]; //根据不同的网络状态改变去做相应

简单的网络状态监听

第一步.自己写一个broadcast接收者 package com.bruce.netconnectionlistener; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import and

Python黑客编程基础3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Python黑客编程3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: ?      操作系统:kali Linux 2.0 ?      编程工具:Wing IDE ?      Python版本:2.7.9 ?      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Android USB大容量存储时SD卡状态监听(转)

对SD卡状态监听,到现在为止我知道的有两种方式: 1.注册StorageEventListener来监听sd卡状态 StorageEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有: MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除 MEDIA_CHECKING:表明对象正在磁盘检查 MEDIA_MOUNTED:表明sd对象是

蓝牙那些事之状态监听

对于蓝牙状态的监听事件,此篇文章讲的是对于手机蓝牙的或者是设备自身蓝牙状态的监听,而并非是远程设备蓝牙状态的监听,当然如果要监听远程设备的蓝牙状态也不是没有办法,相对于监听自身蓝牙状态难度更大,资料页相对较少. 如果要监听本身蓝牙状态,还是要注册广播 1 //注册广播接收器(监听蓝牙状态的改变) 2 IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); 3 4 filter.addAction(Bluetoot

Android 网络流量监听开源项目-ConnectionClass源码分析

很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分代码开源出来,今天就来带着大家分析一下脸书的这个开源代码. GitHub 地址https://github.com/facebook/network-connection-class 注意这个项目下载下来以后 会报很多错误,导致很多人运行不了,大家要根据各自电脑不同的情况修改gradle脚本,才能让

ListView异步加载 LruCache缓存 滑动状态监听

Android异步加载的总结.除了LruCache,我们还可以使用DiskLruCache这个第三方的类来实现"二级缓存".异步加载不仅仅是获取网络资源,我们可以加所有耗时的操作都看成异步加载,所有通过耗时的操作获取的结果我们都可以通过缓存来提高效率,比如我们可以利用这里的LruCache和DiskLruCache(这个缓存一般是用于缓存从网络获取的图片,视频等大的资源,这个时候我们一般和LruCache结合使用),使用Cache有个缺点,就是我们不能保证我们的数据是实时的,所以在re