当我在Activity 里面里面注册了一个监听网络状态的广播
@Override
protected void onStart() {
super.onStart();
registerReceiver(mNetworkReceiver, new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION));
}
取消广播
protected void onStop() {
super.onStop();
unregisterReceiver(mNetworkReceiver);
};
1,为什么每次打开打开aictvity的时候都会执行一次BoradCastReceiver里面的OnReceive 方法,即使没有网络状1态改变。
2,网络状态改变的广播是源码文件里的那个文件的那个方法发起的。
谢谢
android,网络,状态,广播,
------解决方案--------------------
每次打开,不都会重新注册吗
------解决方案--------------------
Android 4.0网络编程详解中文版(全)
下载地址:
http://download.csdn.net/detail/wangxiangdong_sl/5267919
------解决方案--------------------
+1
------解决方案--------------------
xml里面注册了吗
------解决方案--------------------
这是Receiver机制,监听网络状态,网络未连接也是一种状态
说到底,连没连接,不去查一下,谁会知道呢?特别是刚注册的,你说不是吗
------解决方案--------------------
网络状态上报好像是和Servicestate,GsmServcieStateTracker这两个java类有关吧,你说得网络状态是指哪些状态呢? 是否连网,还是信号强度,网络类型
------解决方案--------------------
应是给了个初始状态
------解决方案--------------------
每次打开Activity的时候 LZ的onCreate方法应该是每次执行了一次 所以就执行了onReceive方法
至于网络状态的改变是源码中的ConnectivityManager.java中处理的
可以看下 http://blog.csdn.net/lvron/article/details/7098771
------解决方案--------------------
顶1L 。
一般的做法是在onAttachedWindow()注册, 在onDetached()取消注册 。
添加一个boolean 标记 判断是否已经注册过了。
------解决方案--------------------
注册的时候,都会调用一下。