2013-07-10 4 views
0

Я - нубо в Java и Android У меня вопрос на тему: У меня есть следующий код, который запускается с помощью android: onClick на макете xml В результате поведение UI ждет 5 секунд и только после этих 5 секунд запускается ProgressDialog. Не следует ли начать нить самостоятельно, и сразу появляется диалоговое окно? Почему Thread останавливает ход процедуры? Спасибо!Нить на самом деле не работает

// (Button) 
public void buttonReadGps(View v){ 

    Thread readingGps = new Thread(){ 
     public void run() { 
      // Read GPS code will go here 
      try { 
       sleep(5000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    readingGps.run(); 

    // Create a wait dialog 
    prgDialg = new ProgressDialog(context); 
    prgDialg.setTitle("Reading GPS..."); 
    prgDialg.setMessage("Please wait."); 
    prgDialg.setCancelable(true); 
    prgDialg.setIndeterminate(true); 
    prgDialg.show(); 
} 

ответ

4

Заменить

readingGps.run(); 

с

readingGps.start(); 

Проблема первая версия будет просто запустить свой метод синхронно и блокировать основной поток. Вторая версия фактически запускает поток и продолжается, поэтому метод будет запускаться асинхронно в новом потоке.

Это такой общий шаблон в Android, который SDK дает несколько классов, чтобы помочь: обязательно зайдите в AsyncTask и, возможно, AsyncTaskLoader.

+0

Подробности здесь http://developer.android.com/reference/java/lang/Thread.html#start(). Попробуйте исключить незаконное государство. – SK9

+0

Спасибо Алекс !!! – user2566468

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