2012-06-29 2 views
0

Эта функция находится в Сервисе, когда вызывается действием, которое оно должно генерировать случайное число, и добавить его в ArrayList. Каждый раз, когда добавляется новый элемент, он пытается обновить интерфейс через обновление, которое вызывает runOnUiThread, чтобы использовать этот номер для построения линейного графика, а затем ждать 1 секунду. Я хочу, чтобы обновление происходило каждую секунду. Есть ли способ заставить активность очистить выполнение очереди сообщений? На данный момент он ждет, пока этот поток не завершит выполнение до его обновления. Должен ли я реализовать это в AsyncTask?Обновление Android UI

public void pollDP(int numPt){ 
    final Random gen = new Random(); 
    final int numPtF = numPt; 
    serverLoadList = new ArrayList<Integer>(); 

     new Thread(new Runnable(){ 
      @Override 
      public void run(){ 
       for(int i = 0; i < numPtF; i++){ 
        serverLoadList.add(gen.nextInt()); 
        update(); 
        try { 
         Thread.sleep(1000); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
      } 

     }).run(); 
    } 
} 
+1

попробуйте использовать Thread.start() вместо Thread.run(). Если вы используете run(), Runnable не запускается в новом потоке. Если это не помогло, отправьте некоторый код метода update(). Я прав, предположив, что вы вызываете pollDP из UI-Thread? – Martze

+0

он вызван из потока в действии, так что нет? Я все еще новичок в андроиде. – CatFish

+0

Когда я использую start(), он вызывает нулевой указатель где-то в библиотеке graphView. Я совершенно смущен, почему. – CatFish

ответ

0

Решение находится в комментарии на мой вопрос по Martze. Я делаю это решением для своей проблемы.

попробуйте использовать Thread.start() вместо Thread.run(). Если вы используете run(), Runnable не запускается в новом потоке. Если это не помогло, отправьте некоторый код метода update(). Я прав, предположив, что вы вызываете pollDP из UI-Thread? - Martze

0

Попробуйте использовать MessageHandler выполнить ваши требования посетить this link для получения более подробной информации, сделайте необходимые изменения в соответствии с вашими потребностями :)

+0

Я попытался использовать обработчик по умолчанию и .post(). Будет ли какой-то обычай делать какие-либо различия? – CatFish

+0

Это может сделать разницу стоит попробовать. –

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