android 监听网络变化 多处做出监听处理
2015-09-10 17:16
369 查看
有些时候,需要我们去监听手机网络的变化,从而做出相应的功能操作。如何实现?其实就是监听android系统本身发出的广播“android.net.conn.CONNECTIVITY_CHANGE”。这么一说大家就懂了。
好,当我们监听到该广播时,在程序中可能有多处地方需要做出相应的操作。下面直接上代码吧,大家互相学习学习!!
1、首先在Androidmainfest.xml清单文件中注册一个receiver,监听CONNECTIVITY_CHANGE
2、NetStateReceiver类
3、NetStateChangeListener接口
4、在Activity中,我们实现NetStateChangeListener 接口,如下
5、比如我们还有个SecondActivity,也需要监听网络的变化,那可以按照MainActivity一样,实现NetStateChangeListener接口,并将其add到NetStateReceiver.netList中,并实现其onNetStateChange()方法即可。
好,当我们监听到该广播时,在程序中可能有多处地方需要做出相应的操作。下面直接上代码吧,大家互相学习学习!!
1、首先在Androidmainfest.xml清单文件中注册一个receiver,监听CONNECTIVITY_CHANGE
<receiver android:name="com.kinth.youdian.NetStateReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
2、NetStateReceiver类
public class NetStateReceiver extends BroadcastReceiver { // 网络变化事件监听 public static ArrayList<NetStateChangeListener> netList = new ArrayList<NetStateChangeListener>(); @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")) { if(netList.size() > 0) {// 有监听的时候,传递下去 for (int i = 0; i < netList.size(); i++) { netList.get(i).onNetStateChange(); } } return; } } }
3、NetStateChangeListener接口
/** * 网络变化的接口 * @author Botision.Huang * 2015年9月10日上午10:48:59 * TODO 在Androidmainfest.xml清单列表中注册了各一个receiver, * 并监听了网络的变化 */ public abstract interface NetStateChangeListener { public abstract void onNetStateChange(); }
4、在Activity中,我们实现NetStateChangeListener 接口,如下
public class MainActivity extends Activity implements NetStateChangeListener{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public void onResume() { // TODO 自动生成的方法存根 if (!NetStateReceiver.netList.contains(this)) { NetStateReceiver.netList.add(this); //将当前Activity加入到netList中 } super.onResume(); } @Override public void onDestroy() { // TODO Auto-generated method stub if (NetStateReceiver.netList.contains(this)) { NetStateReceiver.netList.remove(this);// 取消监听推送的消息 } super.onDestroy(); } @Override public void onNetStateChange() { // TODO Auto-generated method stub if (isNetworkAvailable(this)) { Toast.makeText(this, "网络可用", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "当前网络不可用", Toast.LENGTH_SHORT).show(); } } public static boolean isNetworkAvailable(Context context) { NetworkInfo info = getNetworkInfo(context); if (info != null) { return info.isAvailable(); } return false; } private static NetworkInfo getNetworkInfo(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo(); } }
5、比如我们还有个SecondActivity,也需要监听网络的变化,那可以按照MainActivity一样,实现NetStateChangeListener接口,并将其add到NetStateReceiver.netList中,并实现其onNetStateChange()方法即可。
相关文章推荐
- Http请求框架 okHttp 简单使用介绍
- Linux网络编程--select()和pselect()函数
- android6.0SDK中删除HttpClient的相关类的解决方法
- ZOJ 3229 Shoot the Bullet 有源汇上下界网络流 最大流
- HTTP请求详解
- 从贝叶斯方法谈到贝叶斯网络
- ZOJ 2314 Reactor Cooling 无源汇上下界网络流 可行流
- 构造HTTP请求Header实现“伪造来源IP”
- MCC(移动国家码)和 MNC(移动网络码)
- HTTP/2 常见问题回答
- 【Http】HTTP报文结构及请求数据大小
- U3D 网络库实现通信 基于Warensoft Unity3d
- HTTP协议详解
- 异构网络
- [置顶] Linux网络编程--IO模型基础
- Android HttpClient post MultipartEntity - Android 上传文件
- TCP的数据流——滑动窗口,拥塞窗口,慢启动,Nagle算法,经受时延的确认等
- http-关于application/x-www-form-urlencoded等字符编码的解释说明
- tcp学习系列
- HTTP 协议详解