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