Thread bleibt bei WLAN-Aktivierung hängen

N

Nebukad

Neues Mitglied
2
Moin,

ich habe eine App, welche periodisch Daten aus dem Netzwerk lädt. Dies geschieht über einen Thread der sich mittels mHandler.postDelayed immer wieder selber aufruft.

Am Anfang des Threads wird mit wifi.isWifiEnabled() geprüft ob das Wlan aktiv ist, ist dies nicht der Fall wird es mittels wifi.setWifiEnabled(true) aktiviert.

Dies funktioniert auch, wenn das Wlan aus ist und ich die App starte.

Schalte ich allerdings im laufenden Betrieb das Wlan aus, dann bleibt die App oder der Thread hängen (stürzt nicht ab, macht einfach nichts).

Logcat sagt dann:
WifiStateTracker( 844): Disabling interface
Tethering( 844): attempting to remove unknown iface (wlan0), ignoring
SocketListener( 771): sendMsg::600::Iface removed wlan0
ActivityManager( 844): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=de.project.Zeiterfassung/.ZeiterfassungActivity bnds=[402,59][476,138] } from pid 940
dalvikvm( 1397): GC_EXPLICIT freed 5K, 69% free 492K/1539K, external 683K/1017K, paused 7ms
dalvikvm( 1413): GC_EXPLICIT freed 8K, 68% free 549K/1667K, external 683K/1017K, paused 7ms
dalvikvm( 1244): GC_EXPLICIT freed 11K, 45% free 1245K/2243K, external 683K/1017K, paused 15ms
dalvikvm( 1062): GC_EXPLICIT freed 44K, 67% free 763K/2307K, external 683K/1017K, paused 12ms
dalvikvm( 1380): GC_EXPLICIT freed 11K, 38% free 1687K/2691K, external 683K/1017K, paused 22ms
dalvikvm( 1147): GC_EXPLICIT freed 13K, 68% free 691K/2115K, external 683K/1017K, paused 10ms
dalvikvm( 1083): GC_EXPLICIT freed 35K, 71% free 745K/2563K, external 683K/1017K, paused 15ms
dalvikvm( 1014): GC_EXPLICIT freed 188K, 83% free 766K/4419K, external 683K/1017K, paused 16ms
dalvikvm( 1199): GC_EXPLICIT freed 155K, 48% free 2343K/4483K, external 683K/1017K, paused 44ms
dalvikvm( 997): GC_EXPLICIT freed 109K, 50% free 940K/1859K, external 1078K/1558K, paused 14ms
dalvikvm( 940): GC_EXPLICIT freed 31K, 56% free 1043K/2371K, external 2357K/2938K, paused 17ms
dalvikvm( 940): GC_EXPLICIT freed 1K, 57% free 1043K/2371K, external 2353K/2938K, paused 17ms
dalvikvm( 844): GC_CONCURRENT freed 1274K, 39% free 3506K/5699K, external 2526K/3155K, paused 5ms+8ms
Woran könnte das liegen?

Code:
            wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            networkInfo = cm.getActiveNetworkInfo();
            //Integer i = 0;

            if (wifi.isWifiEnabled() == true) {
                System.out.println("Wifi enabled");
                System.out.println(wifi.getWifiState());
} else {
                wifi.setWifiEnabled(true);
                System.out.println("enabling Wifi, state "
                        + wifi.getWifiState());
                while (wifi.getWifiState() != 3) {
                    try {
                        System.out.println("enabling Wifi, state "
                                + wifi.getWifiState());
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
 
ich vermute, du hast ne endlos-schleife, weil der wifi.getWifiState() nicht aktualisiert wird.

schau mal hier, das könnte dir weiterhelfen: ANDROID: if WiFi is enabled AND active, launch an intent - Stack Overflow

evtl. reicht dir schon "Please make sure that you've registered the android.net.conn.CONNECTIVITY_CHANGE intent in your Manifest, or else, you'll never receive a notification that you're online."
 
Die while Schleife war es leider nicht.

Also ggf. liegt es auch einfach an meiner Testweise. Ich gehe mit dem Homebutton aus der App und schalte das Wifi aus und gehe dann wieder rein.

Jetzt hab ich mal spaßeshalber einen Button eigebaut der das Wlan ausschaltet. Danach funktioniert es dann komischerweise mit dem automatischen wiederaktivieren.

Jetzt muss ich nur rauskriegen, ob das auch sonst funktioniert, wenn das Wlan mal weg ist.

Edit:

Es lag an der eigenen Blödheit :cursing:

Bei onPause() hab ich die Threadschleife gestoppt und dann natürlich verpennt bei onResume() wieder zu starten. Dadurch ist dann natürlich nichts mehr passiert, nachdem ich das Wlan außerhalb der App ausgeschaltet hatte.
 
Zuletzt bearbeitet:

Ähnliche Themen

D
Antworten
17
Aufrufe
409
datNeMo
D
M
Antworten
3
Aufrufe
169
moin
M
Y
Antworten
4
Aufrufe
1.227
swa00
swa00
Zurück
Oben Unten