2012-10-25 27 views
5

當網絡從GPRS切換到Wifi時,我收到了3次android.net.conn.CONNECTIVITY_CHANGE的廣播。從GPRS切換到Wifi時接收3個廣播

在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連接」的一條消息,並且只調用doSomething()一次。 我該怎麼辦?

謝謝。對於我可憐的英語感到抱歉。

回答

1

創建檢查的消息話題的布爾標誌值 使其靜態,如果你希望它是accessable一些wehere其他 如

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; 
+0

我會試試看。謝謝。 – happyz90

0

聲明一個整型變量在你的接收機類...

公共靜態INT I = 0;

,並把你的代碼在這種情況下

if((++i)%3==1){ 
//your whole stuff here.. 
} 
+0

好的...但不總是3次...謝謝。 – happyz90

0

我想你可能忘了註銷您的廣播接收器在你的onPause /的onStop。

+0

但我想永遠收到廣播...謝謝。 – happyz90