Android 通过广播获取网络连接的情况
来源:互联网 发布:建筑标准层面积算法 编辑:程序博客网 时间:2024/05/19 19:56
在做电商的时候,遇到过这样的问题,正在浏览着图片呢。突然网络断了,但是用户还是不知情的情况下。一点提示也没有,而且当网络恢复的时候,图片也没有继续下载显示出来。这样对用户体验肯定是不好的。改进的办法就是通过广播的形式通知当前程序的的网络的连接情况。
1.首先定义一个广播接收者继承自BroadcastReceiver:
public class NetworkConnectReceiver extends BroadcastReceiver { private NetWorkListener mNetWorkListener; public NetworkConnectReceiver(NetWorkListener netWorkListener) { mNetWorkListener = netWorkListener; } @Override public void onReceive(Context context, Intent intent) { // 监听网络连接,包括wifi和移动数据的打开和关闭 if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Print.i("aaa", "CONNECTIVITY_ACTION"); NetworkInfo activeNetwork = manager.getActiveNetworkInfo(); if (activeNetwork != null) { // 连接上网络 if (activeNetwork.isConnected()) { if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) { Log.i("aaa", "当前WiFi连接可用 "); } else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) { Log.i("aaa", "当前移动网络连接可用 "); } mNetWorkListener.networkConnect(true); } else { Log.i("aaa", "当前没有网络连接,请确保你已经打开网络 "); mNetWorkListener.networkConnect(false); } } else { // 没有连接上 Print.i("aaa", "当前没有网络连接,请确保你已经打开网络 "); mNetWorkListener.networkConnect(false); } } }}
2.定义个回调接口
public interface NetWorkListener { public void networkConnect(boolean b);}
3.注册这个广播AndroidManifest.xml
<receiver android:name=".broadcast.NetworkConnectReceiver"></receiver>
4.在自己需要的界面,动态注册广播
private NetworkConnectReceiver mNetworkConnectReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_activity2); instance = this; registerBroadcast(); initdata(); initView(); }//注册监听网络广播 private void registerBroadcast() { mNetworkConnectReceiver = new NetworkConnectReceiver(new NetWorkListener() { @Override public void networkConnect(boolean b) { Print.i("aaa", "networkConnect : " + b); if (!b) {//没有网络 //do something } else {//连接网络 //do something } } }); IntentFilter filter = new IntentFilter(); filter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); filter.addAction("android.net.wifi.WIFI_STATE_CHANGED"); filter.addAction("android.net.wifi.STATE_CHANGE"); registerReceiver(mNetworkConnectReceiver, filter); }
5.退出当前界面的时候,反注册
@Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mNetworkConnectReceiver); }
通过测试以上代码可以使用!
0 0
- Android 通过广播获取网络连接的情况
- android 通过广播监听网络连接状况
- Android利用广播监听设备网络连接(断网)的变化情况
- Android 通过注册广播,实时监听网络连接与断开状态的变化
- Android通过广播判断网络连接(仿QQ网络连接显示)
- Android网络连接相关广播
- Android网络连接相关广播
- Android 广播BroadcastReceiver静态/动态注册,获取系统电量广播【开机广播】,获取网络状态广播,Timer的使用简介
- Android 通过广播监听USB连接状态的改变
- Android--广播的使用实例(监听网络连接)
- 获取android连接wifi时候的广播地址
- Android 判断网络连接情况
- Android监听网络连接情况
- android 广播监听网络连接状态
- Android 利用广播监视网络是否连接
- 通过UDP广播获取网络中所有设备ip地址
- 安卓BroadcastReceiver组件使用系列3:使用广播来判断数据网络和无线网络的连接情况
- Android 通过UsageStatsManager获取App使用情况
- SpringMVC 和Struts2的区别
- Maven(1):配置环境
- BP神经网络
- Eltwise层
- 摘录视屏Mybatis
- Android 通过广播获取网络连接的情况
- 追MM与Java的23种设计模式
- 1299 切水果
- 什么时候该用NoSQL?
- JavaScript 面试中常见算法问题详解
- 01 背包问题 cafeteria HPUOJ
- 20170222找女朋友之路思考总结
- 栈和堆
- Mongodb启动命令mongod参数说明