Android网络状态监听
来源:互联网 发布:java选择排序 编辑:程序博客网 时间:2024/04/28 13:32
最近发现自己的项目中没有主动监测网络状态的功能,都是被动掉线!所以在网上找了些资料实现了下!这里写下来,方便以后自己翻看,也方便大家学习指导!
本DOME中设计到了3方面的知识(这些具体知识介绍博客园有很多,这里不多介绍)
1.service(服务)
2.Receiver(广播)
3.Timer(计时器线程)
接下来直接上代码了!
1.创建一个接口保存网络状态
2.建一个类继承service,实现广播定义和注册,计时器的开启
3.下面是具体获取网络状态的方法,先获取到所有网络(wifi,移动。。。)逐一判断是否连接(如果要显示网络信息也很简单自己可以试试,获取的时候信息都包括了)
4.现在回到界面,首先要开启服务
本DOME中设计到了3方面的知识(这些具体知识介绍博客园有很多,这里不多介绍)
1.service(服务)
2.Receiver(广播)
3.Timer(计时器线程)
接下来直接上代码了!
1.创建一个接口保存网络状态
public interface GetConnectState { public void GetState(boolean isConnected); }
2.建一个类继承service,实现广播定义和注册,计时器的开启
@Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); //注册广播 this.mReceiver = new ConnectReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mReceiver, intentFilter); } /** * 广播,将服务接收到的数据传到界面 * @author WJD * */ public class ConnectReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals( ConnectivityManager.CONNECTIVITY_ACTION)) { Timer timer = new Timer(); timer.schedule(new QunXTask(), new Date()); } } } /** * 定时器线程 * * @author WJD * */ class QunXTask extends TimerTask { @Override public void run() { // TODO Auto-generated method stub if (isNetConnect()) { isConnected = true; } else { isConnected = false; } //设置连接状态 if (onGetConnectState != null) { onGetConnectState.GetState(isConnected); } } }
3.下面是具体获取网络状态的方法,先获取到所有网络(wifi,移动。。。)逐一判断是否连接(如果要显示网络信息也很简单自己可以试试,获取的时候信息都包括了)
/** * 判断是否有网络 * @return */ private boolean isNetConnect() { //初始化网络管理器 ConnectivityManager conMag = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); if (conMag == null) { return false; } else { //获取所有的网络连接,包括wifi,和移动网 NetworkInfo[] infos = conMag.getAllNetworkInfo(); if (infos != null) { for (int i = 0; i < infos.length; i++) { //判断是否处于连接状态 if (infos[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; }
4.现在回到界面,首先要开启服务
Intent intent = new Intent();intent.setClass(this, NetWrorkServer.class);bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);其次要定义一个监听器
/** * 网络状态监听事件 */ private ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub } @Override public void onServiceConnected(ComponentName name, IBinder service) { // TODO Auto-generated method stub mNetWrorkServer = ((NetWrorkServer.MyBinder) service).getServer(); mNetWrorkServer.setOnGetConnectState(new GetConnectState() { @Override public void GetState(boolean isConnected) { // TODO Auto-generated method stub if (isConnected) { mHandler.sendEmptyMessage(1); } else { mHandler.sendEmptyMessage(0); } } }); } };然后就是显示,当然是用到Handler来更新UI
class MyHandler extends Handler { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 0: text_mob.setText("网络连接失败"); break; case 1: text_mob.setText("网络连接成功"); break; default: break; } } }5.最后不要忘了把监听器关闭
@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (mNetWrorkServer != null) { unbindService(serviceConnection); } }
希望有大牛指导,提供更强劲的思路!!!
转载自:http://www.cnblogs.com/wjdawx/p/3624865.html
0 0
- android监听网络状态
- Android监听网络状态
- Android 监听网络状态
- android监听网络状态
- Android网络状态监听
- android 网络状态监听
- android网络状态监听
- Android监听网络状态
- android 监听网络状态
- Android网络状态监听
- android 监听网络状态
- android-监听网络状态
- Android-监听网络状态
- Android中监听网络状态
- Android中监听网络状态
- Android:监听WIFI网络状态
- Android中监听网络状态
- Android的网络状态监听
- 项目中的简单shader
- 正则表达式语法大全
- python简单网络服务器
- 二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
- APOC-UVA virtual judge 开启
- Android网络状态监听
- 二分总结:HDU 1551,4190;POJ 1905,3273,3122,3518;CF 371C
- IOS平台上的MVC设计模式
- 我是开发顶贴机的qq是525—093-551十二年工作经验
- SOCI、LiteSQL、POCO数据库访问类库对比
- Maven 各命令执行流程解析和说明
- ffmpeg中的sws_scale算法性能测试
- tar命令详解
- java笔记之数组的概念、声明、初始化、访问方式、复制和动态扩展算法以及递归