Last updated
Last updated
HandlerThread е удобен клас за стартиране на нова работна нишка, която последователно изпълнява задачи.
HandlerThread инициира Looper в нишка за обработка на Runnable или Message
След като HandlerThread е стасртиран може да изпълнява кода в работната нижка чрез Handler
В горния код извикваме метода post на манипулатора, за да поставим Runnable, който да бъде изпълнен възможно най-скоро. Класът Handler поддържа няколко други начина за планиране на Runnable за обработка в бъдеще:
Вместо да изпълнява произволен код на фоновата нишка с помощта на Runnable, както е показано по-горе, Handler може също да изпраща съобщения в опашка с пакетирана информация. За да изпратите съобщение на работната нишка през манипулатора:
В горния код извикваме метода sendMessage на манипулатора, за да изпратим в опашка съобщение, което да бъде обработено възможно най-скоро. Класът Handler поддържа няколко други начина за планиране на обработка на съобщение в бъдеще:
Празни съобщения могат да се използват за обикновени манипулатори, получаващи съобщение от типа „опресняване“ или „уведомяване“, което не изисква допълнителни данни.
Често целта на Handler да приеме както Runnable, така и Message се поставя под въпрос. Имайте предвид, че Runnable е просто Messages, съхраняващо кодовия блок и че и двете се съдържат в една и съща опащка MessageQueue, която трябва да бъде обработена. Едно предимство на Messages е, че изпраща съощение което не е задължително да знае нещо за изпълнението, което може да позволи по-добро капсулиране.
Работната нишка може да бъде спряна незабавно с:
В API> = 18, вместо това трябва да използваме quitSafely (), за да завършим обработката на чакащите съобщения, преди да бъде спряна задачата.
HandleThread задачите могат да се изпълняват паралелно на потребителската нишка но не и паралелно по можду си.
Метод
Описание
post
Веднага изпратете в опашка Runnable за възможно най-ранно изпълнение.
postAtTime
Поставяне в опашката Runnable за изпълни в абсолютно време, определен в милисекунди
postDelayed
Поставяне в опашката Runnable за изпълни след определеното закъснение в милисекунди
postAtFrontOfQueue
Веднага поставете в опашка Runnable най-отпред отпред, за да бъде изпълнен.
Метод
Описание
sendMessage
Избутва съобщение в края на опашката за съобщения.
sendMessageDelayed
Изпраща съобщение, което трябва да бъде доставено след изтичане на определеното време.
sendMessageAtTime
Изпраща съобщение, което трябва да бъде доставено в посочения абсолютен час.
sendEmptyMessage
Изпраща съобщение, съдържащо само един int код.
sendEmptyMessageDelayed
Изпраща съобщение, което трябва да бъде доставено след изтичане на определеното време.
sendEmptyMessageAtTime
Изпраща съобщение, което трябва да бъде доставено в посочения абсолютен час.