Sobes.tech
Middle

Looper дар Android чист?

sobes.tech AI

Ҷавоб аз AI

Looper дар Android класи аст, ки барои кор бо навбатии паёмҳо (MessageQueue) дар сӯрохҳо истифода мешавад. Он сӯрохро бо навбат пайваст мекунад, ки ба он имкон медиҳад паёмҳоро қабул ва коркард кунад.

Принсипи кор:

  1. Эҷоди Looper: Дар сӯрохе, ки бояд навбатии паёмҳо дошта бошад, Looper.prepare() даъват мешавад.
  2. Шурӯъ кардани давр: Даъват мешавад Looper.loop(). Ин даъват сӯрохро банд мекунад, то он даме, ки Looper боздошта шавад. Дар дохили давр, Looper пайваста паёмҳоро аз MessageQueue мебардорад ва ба Handler мақсаднок мефиристад.
  3. Боздошти Looper: Барои анҷоми кор, Looper.quit() ё Looper.quitSafely() даъват мешавад.

Handler барои фиристодани паёмҳо ба MessageQueueLooper ва коркарди онҳо дар сӯрохе, ки бо он пайваст аст, истифода мешавад. Намунаи истифода:

// Дар сӯрохе, ки бояд Looper бошад
new Thread(() -> {
    Looper.prepare(); // 1. Эҷоди Looper ва MessageQueue барои ин сӯрох.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Эҷоди Handler, ки бо Looper-и ин сӯрох пайваст аст.
        @Override
        public void handleMessage(Message msg) {
            // Коркарди паём дар ин сӯрох
        }
    };
    Looper.loop(); // 3. Шурӯъ кардани даврии Looper барои коркарди паёмҳо.
}).start();

// Дар сӯрохе, фиристодани паём
handler.sendMessage(/* паёми шумо */);

Looper зарур аст, то сӯрохҳо тавонанд вазифаҳои асинхронӣ иҷро кунанд ва байни худ муошират кунанд, махсусан дар кор бо сӯрохии UI (ки ба таври пешфарз Looper дорад).