Sobes.tech
Junior

Kuidas töötab Androidis peamine niit?

sobes.tech AI

Vastus AI-lt

Peamine voog (Main Thread) või UI voog Androidis vastutab kasutajaliidese joonistamise, sündmuste töötlemise ja suurema osa rakenduse komponentide (Activity, Service, Broadcast Receiver) täitmise eest.

Selle töö põhineb Looper ja Handler mehhanismil.

  1. Looper: See klass, mis tsükliliselt võtab sõnumeid (Message) MessageQueue järjekorrast ja edastab need vastavale Handlerile töötlemiseks. Iga voog, millel on Looper, on "lõng". Põhivoog luuakse automaatselt Looperiga.
  2. MessageQueue: See andmestruktuur hoiab sõnumite nimekirja, mida tuleb töödelda. Sõnumid võivad sisaldada andmeid (objekte, primitiive) ja viidet Handlerile, mis need töödelda.
  3. Handler: See klass on seotud voogude Looperi ja MessageQueuega. See võimaldab saata sõnumeid MessageQueuele ja töödelda Looperi poolt saadud sõnumeid. Handler võib saata sõnumeid nii oma voogule (näiteks ülesannete planeerimiseks) kui ka teistele voogudele Looperiga.

Töö põhimõte:

  1. Põhivoogude Looper käivitatakse ja täidab pidevalt loop() tsüklit.
  2. Süsteem või teised vood saadavad sõnumeid (näiteks puudutuse sündmusi, Activity elutsükli sõnumeid) Handlerite kaudu MessageQueuele.
  3. Looper võtab MessageQueuest järgmise sõnumi.
  4. Looper edastab sõnum seotud Handlerile.
  5. Handler töötab sõnumi, tehes vastavat loogikat (näiteks UI uuendamine).

Oluline: Kõik UI uuendamisega seotud toimingud peavad toimuma ainult põhivoogus. Pikaajalised toimingud (võrgu päringud, failidega töötamine) põhivoogus põhjustavad selle blokeerimise (ANR - Rakendus ei reageeri) ja rakenduse hangumise. Selliste toimingute jaoks tuleks kasutada töövooge (näiteks Coroutines, RxJava, ExecutorService, AsyncTask).