Toshkent axborot texnologiyalari universiteti samaroand filiali


Thread nima uchun kerak yoki biz nima uchun threadlardan foydalanamiz?


Download 39.75 Kb.
bet2/4
Sana17.06.2023
Hajmi39.75 Kb.
#1539658
1   2   3   4
Bog'liq
thereds

Thread nima uchun kerak yoki biz nima uchun threadlardan foydalanamiz?
- Asinxron yoki fonda process hosil qilish uchun
- GUI dasturlarining tezkorligini oshirish uchun
- Bir nechta mustaqil sub’ektlar(entity) mavjud bo’lganda dastur logikasini soddalashtirish uchun
Application Main Thread
Barcha dasturlarda main thread mavjud. U shuningdek, foydalanuvchi interfeysi (yoki UI) deb ham nomlanadi.
Android main threaddan foydalanuvchi interfeysini o’zgartirishi va inputlarni nazorat qilishi mumkin. Android main threaddagi barcha voqealarni ketma-ketlikda to’playdi va ushbu ketma-ketlikni Looper sinfining obekti bilan qayta ishlaydi.

2-rasm
Default holatda, application ichidagi barcha komponentlar(Activities, Services, Content provider, Broadcast receivers…) main threadda o’z faoliyatini olib boradi.

3-rasm
Bizni applicationimizdagi operatsiyalar main threadda sinxron holda chaqiriladi. Ya’ni, bir operatsiya tugamaguncha ikkinchi operatsiya bajarilmasdan o’z navbatini kutib turadi. Shuning uchun uzoq vaqtli operatsiyalarni main threadda chaqirmaslik tavsiya qilinadi, sababi u main threadni qotirshi mumkin va bir necha daqiqadan keyin “application not responding” degan dialog chiqishi mumkin.

Kelilar, akalar quyidagi misolni ko’rib chiqamiza:
Yuqoridagi kodda start tugmachasi bosilganda startThread metodi chaqiriladi. Ushbu metod log bayonotini har bir soniyada bosib chiqaradi, o’n marotaba.
Default holatda, ushbu usul sinxron ravishda main threadning ichida chaqiriladi va operatsiya tugaguncha dasturni muzlatib qo’yadi. Shunday qilib, agar biz boshqa UI hodisalari bilan o’zaro aloqada bo’lishga harakat qilsak (yoqish / o’chirish tugmasi), “application not responding” dialog oynasi bilan to’qnashamiz:

ANR dialogini nima sababdan ishga tushadi?

  • Agar ilova 5 soniya ichida foydalanuvchi inputiga javob bera olmasa

  • Agar boradcast receiver 10 soniya ichida bajarishni tugatmagan bo’lsa

Bunga yo’l qo’ymaslik uchun biz Network operatsiyalari va Ma’lumotlar bazasi so’rovlari kabi og’ir operatsiyalarni, shuningdek, ayrim komponentlarni alohida threadga yuklashimiz kerak. Alohida thread UI bajarilayotganda ularni blokirovka qilishdan saqlaydi (ya’ni ular interfeysdan asinxron tarzda bajariladi).

Download 39.75 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling