Android App上与网络相关操作有的时候需要用到网络监听,有的时候则不需要,为什么?
结合本人的经验,描述如下:
(1)在Android手机上面需要用到网络的时候,我们需要先判断网络是否可用。此时,需要用到ConnectivityManager类,使用该类读取客户端网络信息(如:是否有网等)。如果我们能控制“检测网络状态”这个步骤(如:点击一次按钮触发一次网络状态检测),那么,则只需要用到ConnectivityManager即可;
(2)而当我们不能控制到底在什么时候触发“检测网络状态”这个步骤的时候,一般情况下,均在网络发生变化(从有网变为无网,从无网变为有网)的时候触发“检测网络是否可用”,此时就需要用到“网络监测”了。
注册网络监测器代码如下(代码来自:http://www.eoeandroid.com/thread-112224-1-1.html):
-
/* 注册网络监听*/
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetworkStateReceiver, filter);
/* 在Activity中的onDestroy中取消监听*/
unregisterReceiver(mNetworkStateReceiver);
注册网络监听的目的为:监听网络状态是否发生改变
(3)网络监听和网络状态检测两者结合所能解决的问题为: 根据网络状态变化自动检测网络是否可用,再根据其是否可用做相应操作。
使用情景示例:文件上传时,网络断开,此时中断文件上传;当网络恢复时,继续续传文件。
具体功能描述:网络状态发生变化(有网无网)的时候触发网络状态检测事件——先检测网络状态是否改变(网络广播接收器),若改变则需要判断当前网络状态是否可用(ConnectivityManager),如果网络可用则要做什么,如果网络不可以则要做什么。