Android BroadcastReceiver
2014-03-10 12:36
381 查看
先假设现在有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()
相关文章推荐
- Android BroadcastReceiver常见监听整理
- Android之BroadcastReceiver的使用
- Subscriber使用可参考-------Android中BroadCastReceiver使用
- Android四大组件之一 BroadcastReceiver解析
- Android 广播BroadcastReceiver基础----重新认识Android(13)
- android BroadcastReceiver 总结
- Android_03--四大组件_Activity+BroadcastReceiver+service+ContentProvider
- 浅谈android Service和BroadCastReceiver
- Android BroadcastReceiver
- Android组件--触发器组件Broadcast Receiver
- Android开发22——广播接收者BroadcastReceiver的原理和注册方式 推荐
- 6.Android BroadcastReceiver
- android四大组件之BroadcastReceiver短信拦截功能
- Android之BroadcastReceiver的使用
- Android提高第六篇之BroadcastReceiver
- android四大组件之BroadcastReceiver
- Android Service BroadcastReceiver And File Download
- Android ReceiverCallNotAllowedException: BroadcastReceiver components are not allowed to register to receive intents
- android四大组件之BroadcastReceiver
- Android 开发笔记三 BroadcastReceiver 广播接收者