Команда сна для Android - PullRequest
       9

Команда сна для Android

0 голосов
/ 17 ноября 2010

Я пишу небольшую программу для периодического опроса RSSI соединения WIFI.Я использую SystemClock.Sleep(2000) в программе.

Проблема, я хотел бы отображать RSSI каждые 2 секунды.Но в настоящее время, даже если он опрашивает каждые 2 секунды, результат отображается только в конце цикла.

Вот фрагмент кода:

for(int i=0;i<10;i++)
        {
            Date dt=new Date();
            WifiInfo info = wifi.getConnectionInfo();
            int rssi = info.getRssi();
            textStatus.append("\n\nRSSI :" +Integer.toString(rssi)); 
            SystemClock.sleep(2000);
        }

Был бы рад, если быу вас есть предложение.

С уважением, Киран

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Не использовать sleep в потоке пользовательского интерфейса.

Вместо этого выполните следующие действия:

  • создать MessageHandler (android.os.Handler), который обрабатывает отображаемые сообщения (textStatus.append(...))
  • создать рабочий поток, который запускает ваш цикл, который содержит сон
  • теперь рабочий поток не может напрямую обновлять textStatus. Вместо этого отправьте сообщение из рабочего потока в обработчик сообщений.

ДОБАВЛЕНО:

Вот полезная ссылка, которая может вам помочь:

См. Раздел «Обработка дорогостоящих операций в потоке пользовательского интерфейса»

http://developer.android.com/guide/appendix/faq/commontasks.html#threading

0 голосов
/ 17 ноября 2010
  • Попробуйте использовать то, что вы делаете, в отдельном потоке,
  • запускайте его непрерывно до тех пор, пока вам не потребуется,
  • оставьте его спать на 2 секунды, делайте свое дело,
  • обновить основной поток из него,
  • зациклить этот процесс



Надеюсь, это немного поможет.

...