博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用广播监听网络状态,然后刷新listView、gridView、RecyclerView等。
阅读量:7222 次
发布时间:2019-06-29

本文共 2652 字,大约阅读时间需要 8 分钟。

一,准备: 1,创建netUtils工具类。 2,自定义广播类MyBoastcastRececiver。 3,自定义接口NetEvent。 4,在自己要监听网络变化的类中,去实现自己定义的接口。 二,具体步骤: 1,创建netUtils工具类如下: public class NetUtil { private static final int NETWORK_MOBILE = 0; private static final int NETWORK_WIFI = 1; private static final int NETWORK_NONE = -1;

public static int getNetWorkState(Context context) {    ConnectivityManager connectivityManager = (ConnectivityManager) context            .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo activeNetworkInfo = connectivityManager            .getActiveNetworkInfo();    if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {        if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {            return NETWORK_WIFI;        } else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {            return NETWORK_MOBILE;        }    } else {        return NETWORK_NONE;    }    return NETWORK_NONE;}复制代码

} 2,自定义广播类MyBoastcastRececiver如下: public class MyBoastcastRececiver extends BroadcastReceiver{ private NetEvent netEvent; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { int netWrokState = NetUtil.getNetWorkState(context); if (netEvent != null){ netEvent.onNetChange(netWrokState); }

} } public void setNetEvent(NetEvent netEvent) { this.netEvent = netEvent; } }
3,自定义接口NetEvent如下: public interface NetEvent { void onNetChange(int Mobile); } 4,在自己要监听网络变化的类中,去实现自己定义的接口如下: a,让要监听的类实现接口NetEvent,然后实现其方法; b,先动态注册你的广播如下: private int netMobile; private MyReceiver myReceiver; private boolean neta; @Override public void onStart() { // TODO Auto-generated method stub super.onStart(); if (myReceiver == null) { myReceiver=new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getActivity().registerReceiver(myReceiver, filter); myReceiver.setNetEvent(this); } } c,在此方法中创建Connect(); @Override public void onNetChange(int Mobile) { // TODO Auto-generated method stub this.Mobile = Mobile; Connect(); } d,在Connect();中去判断自己连接网络的类型以及状态; switch (netMobile) { case 1: Toast.makeText(getActivity(), "已连上wifi", Toast.LENGTH_LONG).show(); if(isok){ initData(); notifyDataSetChanged(); } break; case 0: Toast.makeText(getActivity(), "已连上移动网络", Toast.LENGTH_LONG).show(); if(isok){ initData(); Adapter.notifyDataSetChanged(); } break; case -1: Toast.makeText(getActivity(), "网络不可用", Toast.LENGTH_LONG).show(); isok=true; break; } 完成!!!!!!!!! PS:可能还存在一些潜在的bug,自己的项目可以实现其功能,我是一个新手,错了勿喷!

转载于:https://juejin.im/post/5af3bc7b6fb9a07aa34a453e

你可能感兴趣的文章
nagios系列(四)之nagios主动方式监控tcp常用的80/3306等端口监控web/syncd/mysql及url服务...
查看>>
html5 Canvas处理图像 实例讲解
查看>>
Unix程序员的Win10二三事
查看>>
洛谷P3721 单旋
查看>>
灯 & 树
查看>>
RMQ求解->ST表
查看>>
用HTML5+Javascript在浏览器上制作PPT
查看>>
最短路专题(不定期更新)
查看>>
近几天工作总结(二)
查看>>
C# 2.0学习之--代理2
查看>>
PDF 补丁丁 0.5.0.2520 测试版发布:新春快乐!
查看>>
g++编译时遇到问题undefined reference to
查看>>
Leetcode--263--ugly number
查看>>
python 03day下--linux系统简介及目录结构和文件权限管理
查看>>
Symantec NBU :Unable to retrieve version of the server xxx.xxx.xxx
查看>>
如果你还很年轻,就从测试转开发吧!
查看>>
docker commit
查看>>
云计算之KVM虚拟化实战
查看>>
Linux常用命令
查看>>
PHP基础知识(二)
查看>>