2015-08-15 3 views
1

Я пытаюсь показать ProgressDialog, пока я обрабатываю некоторые данные на фоне.ProgressDialog не отображается

Я вызываю метод show() перед запуском Thread, и он не отображается, но когда я вызываю внутри Thread метод reject(), он появляется и исчезает во вспышке.

Я прочитал некоторые из них об использовании задачи Async, но я действительно не хочу показывать прогресс, просто вращая те объявления, которые пользователь загружает.

Как я могу это решить?

Некоторые из моего кода:

// When clicking a button a call this method to start the thread 
public void onClick(View v) { 

    // Here, doesn't show the spinning wheel 
    progress = ProgressDialog.show(this, 
            "Wait please …", 
            "Scanning …", 
            true); 

    Thread scan = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      runOnUiThread(new Scanner()); 
      progress.dismiss(); 
     } 
    }); 

    scan.start(); 
} 

Я объявил progress вар, как это:

private ProgressDialog progress; 
public void onCreate(Bundle savedInstanceState) { 
    //[...] 
    progress = new ProgressDialog(this); 
    //[...] 
} 

Код Scanner Класс:

private class Scanner implements Runnable { 

    private final String TAG = "SCANNER-->"; 

    public void run() { 

     WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 

     for (int i = 0; i < 10; i++) { 
      wifiManager.startScan(); 
      List<ScanResult> results = wifiManager.getScanResults(); 

      if (results != null) { 
       final int size = results.size(); 

       if (size == 0) { 
        adapter.clear(); 
        adapter.add("No access points in range"); 
        break; 
       } 
       else { 
        txt.setText("Number of results: " + results.size()); 
        Log.d(TAG,"Number of results: " + results.size()); 
        for (ScanResult result : results) { 
         if (adapter.getPosition(result.SSID) == -1) { 
          adapter.add(result.SSID); 
         } 
        } 
       } 
      } 
      else { 
       adapter.clear(); 
       adapter.add("No results. Check wireless is on"); 
       break; 
      } 

      adapter.notifyDataSetChanged(); 
      Log.d(TAG,"sistema avisado de cambios"); 

      // Refresh information each 0.5 second 
      try { 
       Thread.sleep(500); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 

     progress.dismiss(); 
    } 
} 

Как вы можете видеть, что я обновляя список с почти сетями.

ответ

Смежные вопросы