Middle
Ի՞նչ է Looper-ը Android-ում։
sobes.tech AI
Պատասխան AI-ից
Looper-ը օբյեկտ է, որը նախատեսված է միաժամանակ մի գործառույթ մի քանի անգամ կատարել մեկ հոսքում: Այն ստեղծում է իրադարձությունների ցիկլ, որը մշակվում է MessageQueue-ից (հաղորդագրությունների հերթից) հաղորդագրությունները:
Հիմնական բաղադրիչները՝
- MessageQueue՝ գործառույթների կամ հաղորդագրությունների հերթը:
- Looper՝ օբյեկտ, որը հանում է հաղորդագրությունները MessageQueue-ից և ուղարկում դրանք համապատասխան Handler-ին:
- Handler՝ օբյեկտ, որը կապված է որոշակի Thread-ի և MessageQueue-ի հետ: Այն օգտագործվում է հաղորդագրությունները MessageQueue-ին ուղարկելու և դրանց մշակման համար:
Աշխատանքի սկզբունքը՝
- Որոշ Thread, որը ցանկանում է օգտագործել Looper-ը, կանչում է
Looper.prepare()՝ Looper և MessageQueue ստեղծելու համար: - Thread-ը կանչում է
Looper.loop()՝ հաղորդագրությունների մշակման ցիկլը սկսելու համար: Այս ֆունկցիան բլոկավորում է Thread-ը մինչևLooper.quit()-ի կանչը: - Handler-ը ստեղծում և ուղարկում հաղորդագրություններ MessageQueue-ին, որոնք կապված են այս Looper-ի հետ:
- Looper-ը դուրս է բերում հաղորդագրությունները MessageQueue-ից հերթականությամբ և վերադարձնում դրանք Handler-ին
handleMessage()մեթոդում մշակելու համար:
Հավելվածներ՝
- Android-ի UI Thread-ը օգտագործում է Looper-ը՝ իրադարձությունները, ինչպիսիք են սեղմումները և շոշափումները, մշակելու համար՝ առանց UI-ն բլոկավորելու:
- Պատկերաբանական Thread-երը կարող են օգտագործել Looper-ը՝ կրկնվող գործառույթներ կատարելու կամ այլ Thread-ներից ուղարկված հաղորդագրությունները մշակելու համար:
// Օրինակ՝ Looper-ի ստեղծում և գործարկում ֆոնային Thread-ում
class WorkerThread extends Thread {
public Handler handler;
public void run() {
Looper.prepare(); // Ստեղծում ենք Looper և MessageQueue այս Thread-ի համար
handler = new Handler(Looper.myLooper()) { // Ստեղծում ենք Handler
@Override
public void handleMessage(Message msg) {
// Հաղորդագրության մշակումը այստեղ
}
};
Looper.loop(); // Սկսում ենք հաղորդագրությունների ցիկլը
}
}