接收android.net.conn.CONNECTIVITY_CHANGE广播后,onReceive中通过下面代码判断Wifi是否已连接,总会连续三次输出“Wifi
Connected”,也就会连续调用三次doSomething():
[mw_shl_code=java,true] ConnectivityManager connManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(wifiInfo.isConnected()) {
Log.v(Constant.APP_NAME, "Wifi Connected.");
doSomething();
}[/mw_shl_code]
我查了一下,应该是这个原因引起的:
从 GPRS 到 WIFI,程序至少会收到3个Broadcast
第一个是连接到WIFI
第二个是断开GPRS
第三个是连接到WIFI
请问我应该怎样处理,才能在从GPRS切换到Wifi的时候,只调用一次doSomething()?
[mw_shl_code=java,true] ConnectivityManager connManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(wifiInfo.isConnected()) {
Log.v(Constant.APP_NAME, "Wifi Connected.");
doSomething();
}[/mw_shl_code]
我查了一下,应该是这个原因引起的:
从 GPRS 到 WIFI,程序至少会收到3个Broadcast
第一个是连接到WIFI
第二个是断开GPRS
第三个是连接到WIFI
请问我应该怎样处理,才能在从GPRS切换到Wifi的时候,只调用一次doSomething()?
文章详细介绍了在Android应用中,如何避免接收CONNECTIVITY_CHANGE广播后,从GPRS切换到Wifi时,导致doSomething()方法被连续调用三次的情况。通过深入分析广播触发机制,提出解决方案,确保只在成功连接Wifi后调用一次doSomething()。
1万+

被折叠的 条评论
为什么被折叠?



