private IntentFilter filter_Reconnect = new IntentFilter();
private NetReceiver mNetReceiver = null;
public void StartReconnReceiver() {
mNetReceiver = new NetReceiver(mOnNETListener);
filter_Reconnect
.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
this.registerReceiver(mNetReceiver, filter_Reconnect);
}
public void StopReconnReceiver() {
this.unregisterReceiver(mNetReceiver);
}
注释:
NetReceiver 是自己写的一个处理断线事件的一个receiver
android.net.ConnectivityManager.CONNECTIVITY_ACTION是网络变化时系统发出的广播
注意:
当从WIFI转到3G网络时,会收到3个广播,内容依次为
I/NETReceiver(30429): NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true {isConnected = true}
I/NETReceiver(30429): NetworkInfo: type: mobile[UMTS], state: DISCONNECTED/DISCONNECTED, reason: dataDisabled, extra: 3gnet, roaming: false, failover: false, isAvailable: true {isConnected = false}
I/NETReceiver(30429): NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true {isConnected = true}
从3G转到WIFI时,会收到2个广播,内容依次为
I/NETReceiver(30429): NetworkInfo: type: WIFI[], state: DISCONNECTED/DISCONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: false {isConnected = false}
I/NETReceiver(30429): NetworkInfo: type: mobile[HSPA], state: CONNECTED/CONNECTED, reason: dataEnabled, extra: 3gnet, roaming: false, failover: false, isAvailable: true {isConnected = true}
所以,在设置相应的处理时,需要考虑的这点,以免因多次处理造成错误