当网络从GPRS切换到Wifi时,我收到了3次android.net.conn.CONNECTIVITY_CHANGE广播。
在onReceive()中,我使用下面的代码来判断Wifi是否连接。但是我也收到了3次“Wifi Connected”的消息,并且doSomething()被调用了3次。
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();
}
我只想收到一条“Wifi Connected”的消息,并且仅在ONCE上调用doSomething()。 我该怎么办?
谢谢。抱歉我的英语很差。
答案 0 :(得分:1)
创建一个检查messsage的布尔标志值 如果你希望它可以从其他地方访问它,请将其设置为静态 例如
public static boolean flagConnected = false;
ConnectivityManager connManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(wifiInfo.isConnected() && flagConnected == false) {
flagConnected = true;
Log.v(Constant.APP_NAME, "Wifi Connected.");
doSomething();
}
doSomething()之后;你可以再次将标志的值更改为false
ClassName.flagConnected = false;
答案 1 :(得分:0)
在Receiver类中声明一个整数变量...
public static int i = 0;
并将您的代码置于此条件
if((++i)%3==1){
//your whole stuff here..
}
答案 2 :(得分:0)
我想您可能忘记在onPause / onStop中取消注册您的broadcastreceiver。