2012-10-25 7 views
5

Po przełączeniu sieci z GPRS na Wifi otrzymałem 3 razy transmisję z Android.net.conn.CONNECTIVITY_CHANGE.Odbierz 3 transmisje Gdy sieć została przełączona z GPRS na Wifi

W onReceive() używam poniższego kodu, aby ocenić, czy połączenie Wi-Fi jest połączone. Ale otrzymałem również 3 razy komunikat "Wifi Connected", a doSomething() został wywołany 3 razy.

Chcę otrzymać tylko JEDEN komunikat "Wifi Connected" i wywołać doSomething() tylko RAZ. Jak mam to zrobić?

Dziękuję. I przepraszam za mój biedny angielski.

Odpowiedz

1

Tworzenie wartość logiczną flagi, który sprawdza za messsage sprawiają, że statyczny, jeśli ma to być accessable od niektórych wehere inny Eg

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(); 
} 

Po doSomething(); można zmienić wartość na false flag ponownie

ClassName.flagConnected = false; 
+0

Spróbuję. Dziękuję Ci. – happyz90

0

Zadeklaruj zmienną całkowitą w swojej klasie odbiornika ...

public static int i = 0;

i umieścić kod w tym stanie

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

OK ... Ale nie zawsze 3 razy ... Dziękuję. – happyz90

0

myślę, że zapomniał wyrejestrować swoją broadcastreceiver w swojej OnPause/OnStop.

+0

Ale chcę otrzymywać transmisję na zawsze ... Dziękuję. – happyz90

Powiązane problemy