2015-11-23 3 views
1

я в настоящее время сделать некоторые сетевые операции для моей программы JavaFX, и это, как я делаю это сейчас:Что такое эквивалент JavaFX андроида AsyncTask?

  • 1 класс Thread
  • 1 Интерфейс с методами обратного вызова
  • 1 Основной класс Реализация этого интерфейса

Я реализую те, в главном классе и получать обновления как OnProgress(), onDone() и т.д .. через класс Thread, который имеет объект интерфейса внутри него ..

Однако в android эта задача намного проще, просто используя AsyncTask, которая отлично работает.

Там у вас есть

// Ui нить

  • onPreExecute()

// Справочная Thread

  • doInBackground()

// Ui нить

  • onProgressUpdate()

// Ui нить

  • onPostExecute()

Есть класс, который работает таким образом, тоже в JavaFX? Мне нужны обновления прогресса для индикатора выполнения, и мне нужно знать, когда задача выполняется без замораживания экрана пользовательского интерфейса.

+0

Вы прочитали [документы API для 'Задача'] (http://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html)? –

+0

@James_D нет, спасибо, я сейчас понял это. – Linxy

ответ

5

Я не программист на Android, поэтому я не могу проверить, что это прямой эквивалент, но звучит так, как будто вы ищете Task class.

Вы можете создать Task и либо использовать его как Runnable в фоновом режиме, либо отправить его на номер Executor. Вы можете связать или зарегистрировать слушателя с его progressProperty, и вы можете зарегистрировать обработчики через setOnSucceeded, setOnFailed и аналогичные методы.

progressProperty (и другие свойства) обновляются в потоке приложения FX (так что можно безопасно обновлять пользовательский интерфейс в ответ на изменения их значений) и обработчиков событий состояния (успешно, не удалось и т. Д.), также вызывается в потоке приложения FX.

+0

можете ли вы ответить [это] (https://stackoverflow.com/questions/44973236/returning-values-from-thread) – Rahul

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