android网络监听状态改变收到2个广播处理

开发中遇到一个问题,android监听网络时断开wifi或重新连接时会收到2个广播.在网上搜了下,大致说是系统底层服务的原因多广播了几次.

解决方法不难,用一个变量保存上次的网络状态就行了.下面直接上代码.


/**
 * 
 * @author suhaishuang
 *
 */
public class ListenNetStateService extends Service {
private ConnectivityManager connectivityManager;
private NetworkInfo info;
//前次开关状态
private boolean netBoolean = false;
//当前开关状态
private boolean netAvaliable =false;
//第一次加载
private boolean isFirst = true;


private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
info = connectivityManager.getActiveNetworkInfo();
SharedPreferences sp  = getSharedPreferences("config",Context.MODE_PRIVATE);
Editor edit = sp.edit();
Intent netIntent = new Intent();
netIntent.setAction("android.intent.action.netstate");

if(info != null){
netAvaliable = info.isAvailable();
}else{
netAvaliable = false;
}

if(isFirst){
netIntent.putExtra("netAble", netAvaliable);
sendBroadcast(netIntent);
edit.putBoolean("netAble", netAvaliable);
netBoolean = netAvaliable;
isFirst = false;
}else{
if(netBoolean != netAvaliable){
netIntent.putExtra("netAble", netAvaliable);
edit.putBoolean("netAble", netAvaliable);
sendBroadcast(netIntent);
netBoolean = netAvaliable;
}
}
edit.commit();
}
}
};


@Override
public IBinder onBind(Intent intent) {
return null;
}


public void onCreate() {
super.onCreate();
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mReceiver, mFilter);
}


@Override
public void onDestroy() {
unregisterReceiver(mReceiver);
super.onDestroy();
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
}


 

觉得文章有点用,对你有点帮助的,给赞一个或评论下呗


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值