Лабораторно упражнение 8

Разбиране за нишка

Когато дадено приложение се стартира, системата създава нишка на изпълнение за приложението, наречена "main". Тази нишка е много важна, защото тя отговаря за изпращане на събития и управление на потребителския интерфейс и обикновено се нарича нишка на потребителския интерфейс. Всички компоненти (дейности, услуги и т.н.) и техния изпълним код се изпълняват в същия процес и са стартират по подразбиране в нишката на потребителския интерфейс.

Извършването на дълги операции като достъп до мрежата или заявки за бази данни в нишката на потребителския интерфейс ще блокира целия потребителски интерфейс и той няма да отговаря. Когато нишката на потребителския интерфейс е блокирана, събития може да бъде изпратени, включително и съобщения за изрисуване на компоненти, но от гледна точка на потребителя приложението ще е замръзнало. Освен това потребителския интерфейс на Android не е нишково базиран и като такъв не може да се манипулира потребителския интерфейс от фонова нишка.

Има две важни правила:

  • Не трябва да се стартират дълги задачи на потребителската нишка (за да се избегне блокиране на потребителския интерфейс)

  • Не трябва да се променя потребителския интерфейс от фонова нишка (само основната нишка, може да го променя)

Управление на нижки

В резултат на основните проблеми с блокиране на нишката на потребителския интерфейс, описани по-горе, всяко приложение за Android трябва да използва фонови нишки за извършване на всички продължителни задачи като четене от или писане на диска или извършване на мрежови операции. Въпреки това, има няколко различни абстракции за управление на нишки.

  • Runnable

  • HandlerThread

  • ThreadPoolExecutor

Last updated