Sobes.tech
Middle

Androidдеги Looper эмне?

sobes.tech AI

AIден жооп

Looper — бул объект, бир ишти бир нече жолу аткарууга арналган. Ал окуялар циклин түзөт, ал MessageQueue (хабарлар кезеги) аркылуу келген билдирүүлөрдү иштетет.

Негизги компоненттер:

  • MessageQueue: Иштер же билдирүүлөр кезеги.
  • Looper: Объект, ал MessageQueue дан билдирүүлөрдү чыгарып, тиешелүү Handlerге жиберет.
  • Handler: Белгилүү бир Thread жана MessageQueue менен байланышкан объект. Ал MessageQueueга билдирүүлөрдү жиберүү жана иштетүү үчүн колдонулат.

Иштөө принциби:

  1. Looper колдонгуң келген Thread Looper.prepare() деп чакырып, Looper жана MessageQueue түзөт.
  2. Thread Looper.loop() деп чакырып, билдирүүлөрдү иштетүү циклин баштайт. Бул функция Threadти блоктоп турат, Looper.quit() чакырылгандан кийин гана аяктайт.
  3. Handler бул Looper менен байланышкан MessageQueueга билдирүүлөрдү түзүп, жиберет.
  4. Looper MessageQueueдан билдирүүлөрдү тартип менен чыгарып, кайра Handlerге жиберет, ал handleMessage() методу аркылуу иштетилет.

Колдонмолор:

  • Android'деги UI Thread (Колдонуучу интерфейси Thread) Looper'ди колдонуп, окуяларды, мисалы, кликтер жана тийүүлөрдү, UI'ни блоктобой иштетет.
  • Аркакы Thread'лер Looper'ди колдонуп, кайталанган тапшырмаларды аткаруу же башка Thread'лерден келген билдирүүлөрдү иштетүү мүмкүнчүлүгүнө ээ.
// Аркакы Thread'де Looper түзүү жана ишке киргизүү мисалы
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // Бул Thread үчүн Looper жана MessageQueue түзөбүз
        handler = new Handler(Looper.myLooper()) { // Handler түзөбүз
            @Override
            public void handleMessage(Message msg) {
                // Мессежди иштетүү
            }
        };
        Looper.loop(); // Мессеждер циклин баштайбыз
    }
}