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().