Пользовательский интерфейс зависает, когда я создаю View с помощью find () и открываю его в модальном окне - PullRequest
0 голосов
/ 21 января 2020

У меня есть TableView в MainView, и я постоянно добавляю в него много данных (> 2-10 строк в секунду). Также у меня есть кнопка со следующим действием:

button.action {
   val window = find<AnotherView>("param" to mainViewModel.param)
   window.openModal(modality = Modality.WINDOW_MODAL, escapeClosesWindow = false)
}

Пользовательский интерфейс (в частности, tableView) зависает на 1-1,5 секунды, когда я нажимаю кнопку при добавлении данных в tableView. Если я закрываю AnotherView и снова нажимаю на кнопку, открывается новое окно почти без замораживания tableView.

Кто-нибудь знает, как исправить это замораживание?

1 Ответ

0 голосов
/ 21 января 2020

Похоже, вы извлекаете данные из потока пользовательского интерфейса. Вам нужно извлекать данные в фоновом потоке и обновлять элементы таблицы только тогда, когда у вас есть данные. Простой способ сделать это - запустить команду runAsync { fetchData() } ui {table.items = it} , or even use the table. Если это не решит проблему, вам нужно разместить код в AnotherView, чтобы мы могли увидеть узкое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...