Middle
Android-ში რა არის Looper?
sobes.tech AI
პასუხი AI-სგან
Looper - ეს ობიექტია, რომელიც განკუთვნილია ერთ ხაზზე მრავალჯერადი დავალების შესრულებისთვის. იგი ქმნის მოვლენათა ციკლს, რომელიც მართავს შეტყობინებებს შეტყობინებების რიგიდან (MessageQueue).
ძირითადი კომპონენტები:
- MessageQueue: დავალებების ან შეტყობინებების რიგი.
- Looper: ობიექტი, რომელიც იღებს შეტყობინებებს MessageQueue-დან და გადაგზავნის მათ შესაბამის Handler-ს.
- Handler: ობიექტი, რომელიც დაკავშირებულია კონკრეტულ Thread-ს და MessageQueue-ს. გამოიყენება შეტყობინებების გადაგზავნის და მათი დამუშავებისთვის.
მუშაობის პრინციპი:
- ის ნაკადი, რომელიც სურს გამოიყენოს Looper, იძახის
Looper.prepare()რათა შექმნას Looper და MessageQueue. - ის ნაკადი იძახის
Looper.loop()რათა დაიწყოს შეტყობინებების დამუშავების ციკლი. ეს ფუნქცია ბლოკავს ნაკადს მანამ, სანამ არ იძახებაLooper.quit(). - Handler ქმნის და გადაგზავნის შეტყობინებებს MessageQueue-ში, რომლებიც დაკავშირებულია ამ Looper-ს.
- 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(); // იწყებს შეტყობინებების ციკლს
}
}