Обновление UI во время выполнения метода

441
20 января 2017, 06:56

Привет всем. Пишу небольшой интерпретатор, в котором есть несколько функций, в том числе функция sleep(), а так же TextView,который служит роль лога. К примеру есть код для интерпретатора:

printline("test") // пишет в лог текст
sleep(1000) // "спит" секунду

Выполнение выглядит следующим образом: Запускается метод lineWorker, который в свою очередь крутит код. Проблема в том, что EditText обновится лишь тогда, когда программа закончится и метод lineWorker остановится (в данном случае слово test отобразится лишь через секунду). Но нужно, что бы при каждой отработанной функции в строках кода интерфейс обновлялся. Как выйти из этой ситуации?

Answer 1

Вам нужно создать новый поток и после паузы выводить данные через метод 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.

READ ALSO
Построчная запись в файл из List (Java)

Построчная запись в файл из List (Java)

В чём проблема : не знаю как сохранить данные из List в файлtxt Т

587
Чтение чисел из файла и поиск наибольшего

Чтение чисел из файла и поиск наибольшего

Дана задача на нахождение наибольшего числаЕсть файл chisla

442
Как правильно в Main прописать путь к test.fxml и к test.db? Java

Как правильно в Main прописать путь к test.fxml и к test.db? Java

Как правильно прописывать пути к ресурсам в Java? Доброго всем дняВ данный момент изучаю java

473
Разбить строку по тегам и сохранить части в разные переменные

Разбить строку по тегам и сохранить части в разные переменные

У меня есть строка, части которой обрамлены в тегиНапример:

383