Sobes.tech
Junior — Middle

Ako implementovať dispatcher, ktorý funguje v jednom vlákne?

sobes.tech AI

Odpoveď od AI

V Androidu môžete na implementáciu dispatchera (dispečera), ktorý pracuje v režime jedného vlákna, použiť triedu Handler s Looper, ktorý je viazaný na jedno vlákno. Zvyčajne je to hlavné (UI) vlákno, ale môžete si vytvoriť aj vlastné vlákno s vlastným Looper.

Príklad vytvorenia jednovláknového dispatchera:

// Vytvoríme vlákno s Looperom
val handlerThread = HandlerThread("MySingleThreadDispatcher")
handlerThread.start()

// Vytvoríme Handler, ktorý je s týmto vláknom spojený
val handler = Handler(handlerThread.looper)

// Odoslanie úloh na vykonanie v režime jedného vlákna
handler.post {
    // Kód, ktorý bude vykonaný v tomto vlákne
}

Týmto spôsobom budú všetky úlohy odoslané cez tento handler vykonávané sekvenčne v jednom vlákne, čím sa zabezpečí jednovláknový dispatcher.