Sobes.tech
Junior — Middle

Как да определите правилния Looper за използване с Handler при обмен на данни между фонови и основни нишки?

sobes.tech AI

Отговор от AI

В Android Handler се свързва с Looper, който управлява опашката с съобщения за определен поток. За обмен на данни между фонов поток и основния поток трябва да се използва правилният Looper:

  • За основния (UI) поток се използва Looper.getMainLooper().
  • За фонов поток може да се създаде собствен Looper с помощта на HandlerThread.

Пример:

// За изпращане на съобщения към основния поток
Handler mainHandler = new Handler(Looper.getMainLooper());

// За фоновия поток създаваме `HandlerThread`
HandlerThread handlerThread = new HandlerThread("MyBackgroundThread");
handlerThread.start();
Handler backgroundHandler = new Handler(handlerThread.getLooper());

// Използваме mainHandler.post(...) за актуализиране на UI от фоновия поток
// Използваме backgroundHandler.post(...) за изпълнение на задачи във фона

По този начин правилният Looper се избира въз основа на това, в кой поток трябва да се изпълнява кодът: за UI — Looper.getMainLooper(), за фона — HandlerThread.getLooper().