Главный программный поток
Сетевые взаимодействия не происходят моментально. Веб-серверу может потребоваться одна-две секунды на ответ, а загрузка файла может занять ещё больше времени. Из-за продолжительности сетевых операций Android запрещает их выполнение в главном программном потоке. Если вы попытаетесь нарушить это ограничение, Android выдаёт исключение NetworkOnMainThreadException.
Программным потоком (thread) называется отдельная последовательность выполнения программы. Жизненный цикл каждого приложения Android начинается с главного потока. Однако главный поток не является заранее определённой последовательностью действий. Он в бесконечном цикле ожидает событий, инициированных пользователем или системой, и выполняет код как реакцию на эти события по мере их возникновения.
Главный поток выполняет весь код, обновляющий пользовательский интерфейс. В частности, сюда относится код реакции на различные события пользовательского интерфейса - запуск активностей, нажатия кнопок и т.д. (Поскольку все события тем или иным образом связаны с пользовательским интерфейсом, главный поток иногда называют потоком пользовательского интерфейса, или UI-потоком.)
Цикл событий обеспечивает последовательное выполнение кода пользовательского интерфейса. Он гарантирует,, что операции не будут "перебегать дорогу" друг другу, одновременно обеспечивая своевременное выполнение кода.