Эта функция находится в Сервисе, когда вызывается действием, которое оно должно генерировать случайное число, и добавить его в 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();
}
}
попробуйте использовать Thread.start() вместо Thread.run(). Если вы используете run(), Runnable не запускается в новом потоке. Если это не помогло, отправьте некоторый код метода update(). Я прав, предположив, что вы вызываете pollDP из UI-Thread? – Martze
он вызван из потока в действии, так что нет? Я все еще новичок в андроиде. – CatFish
Когда я использую start(), он вызывает нулевой указатель где-то в библиотеке graphView. Я совершенно смущен, почему. – CatFish