Sobes.tech
Junior — Middle

Оё имкон дорад, ки навсозии намудро дар берун аз ҷараёни асосии корбар анҷом диҳем?

sobes.tech AI

Ҷавоб аз AI

В Android, актуализацията на потребителския интерфейс (UI) трябва да се извършва само в основния (UI) поток, тъй като само той има достъп до елементите на интерфейса. Ако се опитате да актуализирате изгледа от фонов поток, приложението ще изхвърли изключение (например, CalledFromWrongThreadException).

Въпреки това, можете да инициирате актуализация на UI от друг поток, използвайки специални механизми, които прехвърлят задачата към основния поток:

  • runOnUiThread(Runnable) — метод на Activity за изпълнение на код в UI потока.
  • Handler, свързан с Looper на главния поток.
  • View.post(Runnable) — позволява да се планира изпълнението на код в UI потока.

Пример:

new Thread(() -> {
    // Работа във фоновия поток
    runOnUiThread(() -> {
        // Актуализация на UI
        textView.setText("Обновено от фонов поток");
    });
}).start();

Следователно, директното обновяване на изгледа извън основния поток не е възможно, но задачите за обновяване могат да бъдат прехвърлени към основния поток.