Sobes.tech
Middle

Android-ში რა არის Looper?

sobes.tech AI

პასუხი AI-სგან

Looper - ეს ობიექტია, რომელიც განკუთვნილია ერთ ხაზზე მრავალჯერადი დავალების შესრულებისთვის. იგი ქმნის მოვლენათა ციკლს, რომელიც მართავს შეტყობინებებს შეტყობინებების რიგიდან (MessageQueue).

ძირითადი კომპონენტები:

  • MessageQueue: დავალებების ან შეტყობინებების რიგი.
  • Looper: ობიექტი, რომელიც იღებს შეტყობინებებს MessageQueue-დან და გადაგზავნის მათ შესაბამის Handler-ს.
  • Handler: ობიექტი, რომელიც დაკავშირებულია კონკრეტულ Thread-ს და MessageQueue-ს. გამოიყენება შეტყობინებების გადაგზავნის და მათი დამუშავებისთვის.

მუშაობის პრინციპი:

  1. ის ნაკადი, რომელიც სურს გამოიყენოს Looper, იძახის Looper.prepare() რათა შექმნას Looper და MessageQueue.
  2. ის ნაკადი იძახის Looper.loop() რათა დაიწყოს შეტყობინებების დამუშავების ციკლი. ეს ფუნქცია ბლოკავს ნაკადს მანამ, სანამ არ იძახება Looper.quit().
  3. Handler ქმნის და გადაგზავნის შეტყობინებებს MessageQueue-ში, რომლებიც დაკავშირებულია ამ Looper-ს.
  4. Looper იღებს შეტყობინებებს MessageQueue-დან თანმიმდევრობით და გადმოგზავნის მათ Handler-ს დამუშავებისთვის handleMessage() მეთოდში.

გამოყენება:

  • Android-ის UI ნაკადები (UI Thread) იყენებენ Looper-ს მოვლენების დამუშავებისთვის, როგორიცაა კლიკები და შეხებები, UI-ს ბლოკირების გარეშე.
  • ფონის ნაკადები შეიძლება გამოიყენონ Looper-ს განმეორებადი დავალებების ან შეტყობინებების დამუშავებისთვის, რომლებიც გამოგზავნილია სხვა ნაკადებიდან.
// მაგალითი Looper-ის შექმნის და გაშვების ფონის ნაკადში
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // ქმნის Looper-ს და MessageQueue-ს ამ ნაკადისთვის
        handler = new Handler(Looper.myLooper()) { // ქმნის Handler-ს
            @Override
            public void handleMessage(Message msg) {
                // დამუშავება აქ
            }
        };
        Looper.loop(); // იწყებს შეტყობინებების ციკლს
    }
}