обновлять UI надо на главном потоке, а как в Thread к нему обратиться? В GCD, например, пишешь DispatchQueue.main.async, а тут? Thread.main {} не работает, кложур он не принимает. Причем не смотря на ворнинг приложение не падает, картинки присваиваются, но все равно не правильно же. Может в курсе кто?
Thread - это более низкоуровневое управление потоками. Здесь нет очередей, здесь есть только потоки. В GCD имеются очереди, которые автоматически распределяют задачи на потоки, то есть GCD сам вставляет задачу в нужный ему поток
Да я это понимаю, вопрос то в другом, как юзая Thread обновить UI в главном потоке, или это невозможно
А как?)
Вроде currentThread, если в main вызовешь его. Могу ошибаться
чет не робит такое
Внутри трэда запусти gcd и внутри него присваивай для ui инфу
Короче говоря, без обращения к очереди main не получится менять интерфейс, как я понял
В андроиде точно так же, если в трэде низкоуровневом что-то делаешь, то тебе один хер нужно к хэндлеру обратиться, чтоб он в очередь пихнул и переключился на main. Думаю тут не отличается принцип
Хм. Хотя странно, что main работает, как я понял, только на одном потоке. Там если ввести print и currentThread то выведется поток под номером 1 и именем main
Да я тоже про это сразу подумал, просто думал мб есть варик чисто юзая трэд обновить юай на мейн потоке, не прибегая к гцд
Ну ты в любом случае низкоуровневый трэд не можешь сделать мейном, он по умолчанию бэкграунд, все что мы можем сделать, это ткнуться в очередь системы, потому что свою создавать не вариант😁
Получается, что обратиться к тому потоку напрямую нельзя?
Обсуждают сегодня