Привет всем. Пишу небольшой интерпретатор, в котором есть несколько функций, в том числе функция sleep(), а так же TextView,который служит роль лога. К примеру есть код для интерпретатора:
printline("test") // пишет в лог текст
sleep(1000) // "спит" секунду
Выполнение выглядит следующим образом: Запускается метод lineWorker, который в свою очередь крутит код. Проблема в том, что EditText обновится лишь тогда, когда программа закончится и метод lineWorker остановится (в данном случае слово test отобразится лишь через секунду). Но нужно, что бы при каждой отработанной функции в строках кода интерфейс обновлялся. Как выйти из этой ситуации?
Вам нужно создать новый поток и после паузы выводить данные через метод post. Самый примитивный пример будет выглядеть вот так:
new Thread(new Runnable(){
public void run() {
for (int i=0;i<n;i++){
doWork();
Thread.sleep(1000);
textView.post(new Runnable(){
public void run() {
printline("test");
}
});
}
}
});
И еще я не совсем понимаю зачем вы для лога используете EditText а не TextView.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости