Sobes.tech
Junior

Kas yra Handler Android?

sobes.tech AI

Atsakymas iš AI

Handler - tai mechanizmas siųsti ir apdoroti Message ir Runnable objektus iš srauto, kuris sukuria Handler, į kitą srautą (arba tą patį).

Jis leidžia planuoti kodo vykdymą tam tikrame sraute, net jei esate kitame sraute. Handler yra susijęs su Looper, kuris tvarko žinučių eilę sraute.

Pagrindiniai komponentai:

  • Handler: siunčia žinutes ir užduotis, apdoroja jas susijusiame sraute.
  • Looper: pradeda žinučių eilės apdorojimo ciklą tam tikrame sraute. Kiekvienas srautas gali turėti tik vieną Looper, bet ne kiekvienas srautas jo turi pagal numatytuosius nustatymus (pavyzdžiui, pagrindinis srautas turi).
  • MessageQueue: žinučių eilė, susijusi su Looper.
  • Message/Runnable: objektai, siunčiami per Handler vykdymui.

Naudojimas:

  • UI atnaujinimas iš ne-UI srauto.
  • Užduočių planavimas su vėlavimu arba tam tikru laiku.
  • Žinučių siuntimas tarp srautų.
// Handler naudojimo pavyzdys UI atnaujinimui iš foninio srauto
Handler mainHandler = new Handler(Looper.getMainLooper()); // Gauname pagrindinio srauto Handler

new Thread(() -> {
    // Atlikti kokią nors ilgą operaciją foniniame sraute
    String result = doBackgroundWork();

    // Siųsti rezultatą į pagrindinį srautą UI atnaujinimui
    mainHandler.post(() -> {
        // Šis kodas bus vykdomas pagrindiniame sraute
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Ilgos darbo imitacija
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Fono darbo rezultatas";
}

private void updateTextView(String text) {
    // UI elemento atnaujinimas
    // someTextView.setText(text);
}