1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Thread bleibt bei WLAN-Aktivierung hängen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Nebukad, 10.10.2011.

  1. Nebukad, 10.10.2011 #1
    Nebukad

    Nebukad Threadstarter Neuer Benutzer

    Beiträge:
    14
    Erhaltene Danke:
    1
    Registriert seit:
    26.04.2011
    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:
    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();
                        }
                    }
     
  2. Tom299, 10.10.2011 #2
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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."
     
  3. Nebukad, 10.10.2011 #3
    Nebukad

    Nebukad Threadstarter Neuer Benutzer

    Beiträge:
    14
    Erhaltene Danke:
    1
    Registriert seit:
    26.04.2011
    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: 10.10.2011

Diese Seite empfehlen