Почему только пользовательский интерфейс в Android обновляет пользовательский интерфейс?

Может ли кто-нибудь объяснить мне, почему только пользовательский интерфейс в Android может обновлять пользовательский интерфейс? Почему ни один другой поток не обновляет пользовательский интерфейс?

В документации указано, что набор инструментов Android UI не является потокобезопасным . Таким образом, модель с одним потоком гарантирует, что пользовательский интерфейс не будет изменяться одновременно разными потоками.

Как указано в руководстве разработчика Android об Thread:

Когда ваше приложение выполняет интенсивную работу в ответ на взаимодействие с пользователем, эта модель с одним потоком может обеспечить низкую производительность, если вы не будете правильно выполнять свое приложение. В частности, если все происходит в потоке пользовательского интерфейса, выполнение длительных операций, таких как доступ к сети или запросы к базе данных, блокирует весь пользовательский интерфейс. Когда поток заблокирован, события не могут быть отправлены, включая события рисования. С точки зрения пользователя приложение, похоже, зависает. Хуже того, если поток пользовательского интерфейса заблокирован более чем на несколько секунд (около 5 секунд в настоящее время), пользователю предоставляется печально известное диалоговое окно «приложение не отвечает» (ANR). Затем пользователь может решить выйти из приложения и удалить его, если они недовольны.

Кроме того, инструментарий Andoid UI не является потокобезопасным. Таким образом, вы не должны манипулировать своим пользовательским интерфейсом из рабочего потока – вы должны делать все манипуляции с вашим пользовательским интерфейсом из потока пользовательского интерфейса. Таким образом, для модели одного потока Android существует всего два правила:

Не блокируйте поток пользовательского интерфейса. Не обращайтесь к инструментарию Android UI из-за пределов пользовательского интерфейса.

Intereting Posts