先假设现在有MainActivity.java和NetworkAndroid.java这两个文件,要注册一个监听,监听网络的变化。
注册有两种方式:
1. (静态注册)
在Manifest.xml的application中
<receiver android:name=".NetWorkAndroid">
<intent-filter >
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
2.(动态注册)
在MainActivity.java中加入
private NetWorkAndroid mNetworkStateReceiver = null;
public void addNetworkObserver() {
if (null != mNetworkStateReceiver) {
return;
}
mNetworkStateReceiver = new NetWorkAndroid();
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
this.registerReceiver(mNetworkStateReceiver, filter);
}
public void removeNetworkObserver() {
if (null == mNetworkStateReceiver) {
return;
}
this.unregisterReceiver(mNetworkStateReceiver);
mNetworkStateReceiver = null;
}
在需要注册的时候调用addNetworkObserver(),需要注销的时候调用removeNetworkObserver()
一般当检测到程序进入后台时,便需要注销,待程序回来后再注册,否则当程序被后台手动强制关闭后,网络产生变化,便会出现“unfortunatetly, xxx has stoped”
关于注册和注销的时机,如果是cocos2d-x游戏,建议在
void AppDelegate::applicationDidEnterBackground()
void AppDelegate::applicationWillEnterForeground()
其余情况,只要对称就好
例如
MainActivity.onStart()和MainActivity.onStop()
MainActivity.onResume和MainActivity.onPause()
注册有两种方式:
1. (静态注册)
在Manifest.xml的application中
<receiver android:name=".NetWorkAndroid">
<intent-filter >
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
2.(动态注册)
在MainActivity.java中加入
private NetWorkAndroid mNetworkStateReceiver = null;
public void addNetworkObserver() {
if (null != mNetworkStateReceiver) {
return;
}
mNetworkStateReceiver = new NetWorkAndroid();
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
this.registerReceiver(mNetworkStateReceiver, filter);
}
public void removeNetworkObserver() {
if (null == mNetworkStateReceiver) {
return;
}
this.unregisterReceiver(mNetworkStateReceiver);
mNetworkStateReceiver = null;
}
在需要注册的时候调用addNetworkObserver(),需要注销的时候调用removeNetworkObserver()
一般当检测到程序进入后台时,便需要注销,待程序回来后再注册,否则当程序被后台手动强制关闭后,网络产生变化,便会出现“unfortunatetly, xxx has stoped”
关于注册和注销的时机,如果是cocos2d-x游戏,建议在
void AppDelegate::applicationDidEnterBackground()
void AppDelegate::applicationWillEnterForeground()
其余情况,只要对称就好
例如
MainActivity.onStart()和MainActivity.onStop()
MainActivity.onResume和MainActivity.onPause()