Microsoft Word Ma'ruza Matni Mobil ilovalar docx
Download 3.38 Mb. Pdf ko'rish
|
1-ma\'ruza
1-Ma’ruza: ANDROID OPERATSION TIZIMINING ARXITEKTURASI VA ASOSIY TUSHUNCHALARI 1.1. Android ilovalari arxitekturasi. Android operatsion tizimining arxitekturasi va asosiy tushunchalari Kalit so‘zlar: Linux, Kotlin, Java, C++, App Bundle, APK, Market, Android One, Android SDK, Android ROM, Android Runtime, Dalvik Android, Just-In-Time, Ahead-of-Time, Android Framework. Android ilovalari Kotlin, Java va C++ tillarida yozilishi mumkin. Android SDK vositalari sizning kodingizni har qanday ma’lumotlar va resurs fayllari bilan birga APK yoki Android App Bundle ichiga jamlaydi. .apk kengaytmali arxiv fayli bo‘lgan Android paketi ish vaqtida talab qilinadigan Android ilovasining mazmunini o‘z ichiga oladi va Android qurilmalari ilovani o‘rnatish uchun foydalanadigan fayldir. .aab arxiv fayli boʻlgan Android App Bundle Android ilova loyihasi mazmunini, jumladan, ishga tushirish vaqtida talab qilinmaydigan baʼzi qoʻshimcha metamaʼlumotlarni oʻz ichiga oladi. AAB - bu Android qurilmalariga o‘rnatib bo‘lmaydigan bozor nashri formati bo‘lib, APK yaratish va imzolashni keyingi bosqichga kechiktiradi. Masalan, ilovangizni Google Play orqali tarqatganingizda, Google Play serverlari optimallashtirilgan APK fayllarini yaratadi, ularda faqat ilovani oʻrnatishni soʻragan maxsus qurilma talab qiladigan manbalar va kodlar mavjud. Har bir Android ilovasi quyidagi Android xavfsizlik funksiyalari bilan himoyalangan oʻzining xavfsizlik sinov muhitida joylashgan: Android operatsion tizimi Linux ko‘p foydalanuvchi tizimi bo‘lib, unda har bir ilova alohida foydalanuvchi hisoblanadi. Odatiy bo‘lib, tizim har bir ilovaga noyob Linux foydalanuvchi identifikatorini tayinlaydi (identifikator faqat tizim tomonidan qo‘llaniladi va ilovaga noma’lum); Tizim ilovadagi barcha fayllarga ruxsatlarni o‘rnatadi, shunda faqat ushbu ilovaga tayinlangan foydalanuvchi identifikatori ularga kira oladi; Har bir jarayon o‘zining virtual mashinasiga (VM) ega, shuning uchun dastur kodi boshqa ilovalardan ajratilgan holda ishlaydi; Odatiy bo‘lib, har bir dastur o‘zining Linux jarayonida ishlaydi. Android tizimi dasturning istalgan komponentini bajarish kerak bo‘lganda jarayonni boshlaydi va undan keyin kerak bo‘lmaganda yoki tizim boshqa ilovalar uchun xotirani qayta tiklashi kerak bo‘lganda jarayonni tugatadi. Android eng kam imtiyoz tamoyilini amalga oshiradi. Ya’ni, har bir dastur sukut bo‘yicha faqat ishlashi kerak bo‘lgan komponentlarga kirish huquqiga ega va boshqa hech narsa yo‘q. Bu dastur tizimning ruxsati bo‘lmagan qismlariga kira olmaydigan juda xavfsiz muhitni yaratadi. Biroq, ilovaning boshqa ilovalar bilan bog‘lanishi va tizim xizmatlariga kirishi uchun dasturning usullari mavjud: Ikki dastur bir xil Linux foydalanuvchi identifikatoridan foydalanishi mumkin, bu holda ular bir-birining fayllariga kirishlari mumkin. Tizim resurslarini tejash uchun bir xil foydalanuvchi identifikatoriga ega ilovalar ham bir xil Linux jarayonida ishlashi va bir xil virtual mashinadan foydalanishi mumkin; Arizalar ham xuddi shu sertifikat bilan imzolanishi kerak. Ilova qurilma joylashuvi, kamera va Bluetooth ulanishi kabi qurilma maʼlumotlariga kirish uchun ruxsat soʻrashi mumkin. Foydalanuvchi ushbu ruxsatlarni aniq berishi kerak. Qo‘shimcha ma’lumot olish uchun Tizim ruxsatnomalari bilan ishlash bo‘limiga qarang. Android - bu Google tomonidan ishlab chiqilgan mashhur mobil operatsion tizim (OT), asosan smartfon va planshetlarda foydalanish uchun. Android operatsion tizimi Linux yadrosiga asoslangan va ochiq manba hisoblanadi, ya 'ni har kim kodni o‘zgartirishi, yaxshilashi va tarqatishi mumkin. Android uni ishlab chiquvchilar uchun innovatsion va qiziqarli ilovalar yaratish uchun ideal platformaga aylantiradigan sermahsul xususiyatlar to‘plamini taqdim etadi. Androidning rivojlanishidagi ba’zi muhim bosqichlar Android Inc.: Android dastlab 2003 yilda Endi Rubin, Rich Miner, Nik Sears va Chris White tomonidan asos solingan Android Inc. nomli kompaniya tomonidan ishlab chiqilgan. Kompaniyaning maqsadi ko‘proq foydalanuvchi bo‘ladigan mobil operatsion tizimni ishlab chiqish edi. - o‘sha paytda mavjud bo‘lgan tizimlarga qaraganda qulay va moslashtirilgan. 1.1.1-Rasm.Android operatsion tizimining asoschilari va ishlab chiquvchilari – Endi Rubin, Rich Miner, Nik Sears va Kris Uayt Google sotib olish: 2005 - yilda Google Android Inc.ni sotib oldi va yangi mobil operatsion tizimni ishlab chiqish ustida ishlay boshladi. Kompaniya dastlab Android dasturiy ta’minotini ishlab chiqqan ko‘plab odamlar bilan ishlashda davom etdi. Birinchi Android telefoni: 2008 - yilda birinchi Android telefoni T-Mobile G1 (HTC Dream nomi bilan ham tanilgan) chiqarildi. Telefon Android 1.0 operatsion tizimida ishlagan va hozirda tanish bo‘lgan bosh ekran, bildirishnomalar paneli va ilovalar tortmas i bilan jihozlangan birinchi qurilma edi. 1.1.2-Rasm.Android 1.0 va 1.1 logotipi va ularning QWERT smartfonidagi ko‘rinishi. Android Market: 2008 yilda Android Market (hozirda Google Play deb nomlanadi) ishga tushirildi. Bu foydalanuvchilar o‘zlarining Android qurilmalari uchun ilovalarni yuklab olishlari va o‘rnatishlari mumkin bo‘lgan bozor edi. Android versiyalari: Yillar davomida Google Android operatsion tizimining ko‘plab versiyalarini chiqardi, ularning har biri o‘ziga xos xususiyatlar va yaxshilanishlarga ega. Ba’zi mashhur versiyalar qatoriga 2009 - yilda Android 2.0 (Eclair), 2011 yilda Android 4.0 (Ice Cream Sandwich), 2014 - yilda Android 5.0 (Lollipop) va 2019 - yilda Android 10 ishga tushirildi. 1.1.3-Rasm. Google Play oynasi Ochiq manba: Android har doim ochiq kodli loyiha bo‘lib kelgan, ya’ni har kim manba kodini yuklab olishi, uni o‘zgartirishi va operatsion tizimning o‘z versiyasini tarqatishi mumkin. Bu ko‘p lab moslashtirilgan Android ROM larning rivojlanishiga olib keldi, ular keng doiradagi qurilmalarga o‘rnatilishi mumkin. Android One: 2014-yilda Google rivojlanayotgan mamlakatlardagi foydalanuvchilarga arzon va sifatli Android qurilmalarini taqdim etishga mo‘ljallangan Android One dasturini taqdim etdi. Dastur bir qator qurilmalarda doimiy foydalanuvchi tajribasini ta’minlash va qurilmalar muntazam yangilanishlar va xavfsizlik yamoqlarini olishini ta’minlashga qaratilgan. 1.1.4-Rasm.Androidning OS bozoridagi ulushi Android Wear: 2014-yilda Google Android operatsion tizimining aqlli soatlar va boshqa taqiladigan qurilmalar uchun moʻljallangan versiyasi boʻlgan Android Wear-ni ham taqdim etdi. Android Wear kichik ekranlar uchun soddalashtirilgan interfeys, shuningdek, ovozli buyruqlar va salomatlikni kuzatish kabi funksiyalarni taqdim etdi. Android TV: 2014-yilda Google Android TVni ham ishga tushirdi, bu operatsion tizimning televizorlar va pristavkalar uchun mo‘ljallangan versiyasi. Android TV kontentni ko‘rib chiqish va oqimlash, shuningdek, ovozli buyruqlar va o‘yinlarni qo‘llab-quvvatlash uchun soddalashtirilgan interfeysni taqdim etdi. Android Today: Bugungi kunda Android dunyodagi eng mashhur mobil operatsion tizimlardan biri bo‘lib, 2,5 milliarddan ortiq faol qurilmalarga ega. Android yangi xususiyatlar va yangilanishlar bilan rivojlanishda davom etmoqda va uning ochiq manba tabiati ishlab chiquvchilar va foydalanuvchilarga uning doimiy rivojlanishiga hissa qo‘shish imkonini beradi. Android ROM (ing. Read-Only Memory - faqat o‘qish uchun mo‘ljallangan (xotira) - bu Android qurilmasida ishlaydigan dasturiy ta’minot to‘plami bo‘lib, asosiy funksionallik va foydalanuvchi interfeysini ta’minlaydi. U qurilma ishlab chiqaruvchisi yoki tashuvchisi tomonidan kiritilgan har qanday o‘zgartirishlar bilan birga Android operatsion tizimini o‘z ichiga oladi. Android ROM foydalanuvchilar, ishlab chiquvchilar yoki qurilma ishlab chiqaruvchilari tomonidan yangi xususiyatlarni qo‘shish yoki qurilmaning ko‘rinishini va interfeysini o‘zgartirish uchun moslashtirilishi mumkin. Android ROMlarining ikkita asosiy turi mavjud: qurilma ishlab chiqaruvchisi tomonidan oʻrnatilgan original ROMlar boʻlgan Stock ROMlar va Android hamjamiyati yoki uchinchi tomon ishlab chiquvchilari tomonidan ishlab chiqilgan birja ROMlarining oʻzgartirilgan versiyalari boʻlgan Custom ROMlar. Maxsus ROMlar foydalanuvchilarga qoʻshimcha funksiyalar va sozlash imkoniyatlarini taklif qiladi, biroq ular toʻgʻri oʻrnatilmagan boʻlsa, qurilma kafolatini bekor qilishi va xavfsizlikka xavf tugʻdirishi mumkin. Android operatsion tizimining arxitekturasi Android operatsion tizimi to‘rtta asosiy qatlamni o‘z ichiga olgan qatlamli arxitekturada qurilgan: Linux yadrosi, apparat abstraktsiya qatlami (HAL), mahalliy C/C++ kutubxonalari va Android Runtime.Linux yadrosi: Android arxitekturasining eng quyi darajasida Linux yadrosi joylashgan. Yadro qurilmaning apparat vositalarini, jumladan, protsessor, xotira va kiritish/chiqarish (I/U) operatsiyalarini boshqarish uchun javobgardir. Linux yadrosi Android operatsion tizimining qolgan qismi uchun barqaror va xavfsiz poydevor yaratadi. Linux yadrosi Android operatsion tizimining asosiy komponentidir. Android 1991-yilda Linus Torvalds tomonidan ishlab chiqilgan ochiq kodli operatsion tizim yadrosi boʻlgan Linux yadrosiga asoslangan. Yadro tizimning protsessor, xotira va kiritish/chiqarish qurilmalari kabi apparat resurslarini boshqarish va taʼminlash uchun javobgardir. Ilovalar va xizmatlarning ushbu resurslar bilan standartlashtirilgan tarzda o‘zaro ta’sirini ta’minlaydigan abstraksiya qatlami. Androidda ishlatiladigan Linux yadrosi mobil platformaning maxsus talablariga moslashtirilgan. U quvvatni boshqarish, multimedia va simsiz tarmoq kabi mobil qurilmalarga xos xususiyatlarni qo‘llab-quvvatlashni o‘z ichiga oladi. Bundan tashqari, yadro mobil qurilmalar uchun yaxshiroq ishlash va xavfsizlikni ta’minlash uchun o‘zgartirildi. Androidda Linux yadrosidan foydalanishning asosiy afzalliklaridan biri shundaki, u ochiq kodli dasturiy ta’minotdir, ya’ni ishlab chiquvchilar o‘zlarining maxsus ehtiyojlariga mos ravishda manba kodiga kirishlari va o‘zgartirishlari mumkin. Bu Android qurilmalari uchun qo‘shimcha funktsiyalar va optimallashtirishni ta’minlaydigan ko‘plab maxsus ROMlar (faqat o‘qish uchun xotira) va yadrolarni yaratishga olib keldi. Linux yadrosi Android operatsion tizimining muhim tarkibiy qismi bo‘lib, mobil platformaning apparat va dasturiy resurslari uchun mustahkam poydevor yaratadi. Uning ochiq manbali tabiati moslashtirish va innovatsiyalarni amalga oshirishga imkon beradi va uning keng tarqalishi butun dunyo bo‘ylab ishlab chiquvchilar va foydalanuvchilarning jonli ekotizimini yaratishga yordam berdi. Dalvik - bu Android operatsion tizimidagi to‘xtatilgan virtual mashina bo‘lib, u Android ilovalarini ishga tushirish va bajarish uchun ishlatilgan. U Android 1.5 Cupcakeda taqdim etilgan va Android Runtime (ART) bilan almashtirilgan Android 4.4 KitKatgacha standart virtual mashina edi. Dalvik - protsessual quvvati va xotirasi cheklangan mobil qurilmalar uchun maxsus ishlab chiqilgan registrga asoslangan virtual mashina. U Just-In-Time (JIT) kompilyatsiya yondashuvidan foydalanadi, ya’ni dastur kodi ARTda bo‘lgani kabi Oldindan Vaqt (AOT) emas, balki ish vaqtida kompilyatsiya qilinadi va optimallashtiriladi. Bu Dalvik-ga ilovalarni tezroq yuklash va ishga tushirish imkonini berdi, lekin u ham yuqori xotiraga ega edi va batareya quvvati jihatidan unchalik samarali emas edi. Dalvik 5.0 versiyasidan oldin Android-da ishlatiladigan original virtual mashina edi. U kam quvvatli qurilmalarda ishlash uchun optimallashtirilgan va ish vaqtida bayt kodini mashina kodiga tarjima qilish uchun Just-In-Time (JIT) kompilyatoridan foydalangan. Bu yondashuv ilovalarni tezroq ishga tushirish va xotira sarfini kamaytirish imkonini berdi, biroq batareya quvvatining koʻproq sarflanishiga va ilovalarni ishga tushirish vaqtlarining uzoqroq boʻlishiga olib keldi. O‘zining afzalliklariga qaramay, Dalvik oxir-oqibat bir qator omillar tufayli ART bilan almashtirildi, jumladan uning yuqori xotirasi, sekinroq dasturni ishga tushirish vaqti va ilg‘or xususiyatlar va funksionallik nuqtai nazaridan cheklovlar. Biroq, Dalvik ba’zi maxsus Android tuzilmalarida va boshqa Java ga asoslangan mobil platformalarda foydalanishda davom etmoqda. Umuman olganda, Dalvik Android platformasining dastlabki rivojlanishida muhim rol o‘ynadi va ishlab chiquvchilarga mobil qurilmalar uchun yuqori sifatli, sezgir va xususiyatlarga sermahsul ilovalarni yaratishga imkon beruvchi tez va samarali virtual mashinani taqdim etdi. O‘shandan beri u ART bilan almashtirilgan bo‘lsada, uning merosi Android platformasining rivojlanishida va kengroq mobil hisoblash landshaftida sezilyapti. ART (eng. Virtual machine - Android Runtime) Android operatsion tizimidagi standart virtual mashina bo‘lib, u Android ilovalarini ishga tushiradi va bajaradi. ART avvalgi Dalvik virtual mashinasini almashtirilgan va Android 5.0 Lollipopda taqdim etilgan. Shundan beri u Androidning barcha versiyalarida standart ish vaqtiga aylandi. ART - bu dastur kodini bajaradigan ish vaqti muhiti va dasturga fayl tizimi, tarmoq va grafik apparat kabi tizim xizmatlariga kirish imkonini beruvchi asosiy kutubxonalar to‘plamini taqdim etadi. U “Ahead-Of-Time” (AOT) kompilyatsiya usulidan foydalanadi, ya’ni dastur kodi Dalvikdagi kabi Just-In-Time (JIT) emas, balki o‘rnatish vaqtida asl ko‘rinishidan haqiqiy mashina kodiga kompilyatsiya qilinadi. 1.1.5-Rasm.ART va Dalvik farqi ART ning Dalvikga nisbatan asosiy afzalliklaridan biri uning yaxshilangan ishlashi, ayniqsa dasturni ishga tushirish vaqtlari va umumiy javob berish qobiliyatidir. Buning sababi shundaki, ART kodni tezroq bajarishga imkon beruvchi yanada samarali kompilyatsiya jarayonidan foydalanadi, kamroq xotira yuki va kamroq ish vaqtida xatolar. Bundan tashqari, ART ishlab chiquvchilarga yuqori sifatli Android ilovalarini yaratishni osonlashtiradigan yaxshilangan axlat yig‘ish va yaxshilangan disk raskadrovka vositalari kabi bir qator ilg‘or xususiyatlarni qo‘llab quvvatlaydi. Androidda ART va Dalvik o‘rtasidagi asosiy farq ularning kodni bajarish usulidir. Dalvik Just-In-Time (JIT) kompilyatsiyasidan, ART esa Ahead-of-Time (AOT) kompilyatsiyasidan foydalanadi. JIT bilan kod kerak bo‘lganda tuziladi, AOT bilan esa kod muddatidan oldin tuziladi va ikkilik formatda saqlanadi, bu esa ilovalarni tezroq ishga tushirish vaqtini va umumiy ish Activityini yaxshilashga olib keladi. Bundan tashqari, ART kengroq arxitekturani qo‘llab -quvvatlaydi va Dalvik bilan solishtirganda yaxshilangan axlat yig‘ish mexanizmlariga ega. Hardware Abstraction Layer (HAL): Linux yadrosining tepasida HAL joylashgan. HAL Android platformasi uchun kamera, Wi-Fi moduli va sensorlar kabi qurilmaning apparat qismlariga kirish uchun standart interfeysni taqdim etadi. Ushbu abstraksiya qatlami bir xil kodni turli xil apparat konfiguratsiyalarida ishlatilishini ta’minlashga yordam beradi, bu esa ishlab chiquvchilarga keng doiradagi qurilmalarda ishlaydigan ilovalarni yaratishni osonlashtiradi. Mahalliy C/C++ kutubxonalari: Android platformasi C va C++ tillarida yozilgan mahalliy kutubxonalar to‘plamini ham o‘z ichiga oladi. Bu kutubxonalar grafik tasvirlarni ko‘rsatish, ma’lumotlar bazasiga kirish va multimediyani ishga tushirish kabi keng imkoIntentsni taqdim etadi. Ushbu qatlamdagi ba’zi asosiy kutubxonalarga 3D grafikalar uchun OpenGL ES, ma’lumotlar bazasiga kirish uchun SQLite va audio va videolarni ijro etish uchun Media Framework kiradi. 1.1.6-Rasm.Hardware Abstraction Layer (HAL) Android Application Framework: Android Application Framework ishlab chiquvchilarga Android ilovalarini yaratishga imkon beruvchi APIlar to‘plamini taqdim etadi. Ushbu APIlar bildirishnomalarni qayta ishlash, qurilma resurslarini boshqarish va tizim xizmatlariga kirish xizmatlarini o‘z ichiga oladi. Ilovalar ramkasi, shuningdek, Android ilovasining foydalanuvchi interfeysini yaratish uchun ishlatilishi mumkin bo‘lgan TextViews, Buttons va ListViews kabi UI komponentlari to‘plamini o‘z ichiga oladi. Umuman olganda, Androidning qatlamli arxitekturasi keng ko‘lamli apparat konfiguratsiyasida ishlashi mumkin bo‘lgan mobil ilovalarni ishlab chiqish uchun barqaror va moslashuvchan platformani ta’minlash uchun mo‘ljallangan. Android platformasi vaqt oʻtishi bilan rivojlanib bordi va oʻzining ochiq manbali tabiati va qurilmalarda doimiy foydalanuvchi tajribasini taqdim etish qobiliyati tufayli ishlab chiquvchilar uchun mashhur tanlov boʻlib qolmoqda. Ilovalar: Android qurilmalarida o‘rnatilishi va ishlashi mumkin bo‘lgan ilovalarni ishlab chiqish uchun asos yaratadi. Ilovalar Java yoki Kotlin dasturlash tillari yordamida ishlab chiqilishi mumkin va ular qurilmadagi kamera, sensorlar va joylashuv xizmatlari kabi keng imkoIntentsdan foydalanishlari mumkin. 1.1.7-Rasm.Android ilovalarini yaratish Activities: Activitylar (ing. Activities) Android ilovasining asosiy foydalanuvchi interfeysi komponentlaridir. Ular foydalanuvchi o‘zaro aloqada bo‘lishi mumkin bo‘lgan foydalanuvchi interfeysi bilan bitta ekranni ifodalaydi. Ilovada bir nechta Activity bo‘lishi mumkin va ular foydalanuvchi harakatlana oladigan ekranlar oqimini yaratish uchun bir-biriga bog‘lanishi mumkin. Activitylardan shuningdek, tugmani bosish yoki ekranni surish kabi foydalanuvchi ma’lumotlarini qabul qilish va ularga javob berish uchun foydalanish mumkin. 1.1.8-Rasm. Activity launchedning sxemasi Androidda kontent provayderlari - bu boshqa ilovalar yoki komponentlar tomonidan kirish mumkin bo‘lgan umumiy ilova ma’lumotlar to‘plamini boshqaradigan dastur komponentining bir turidir. Kontent provayderlari ma’lumotlarni boshqarish uchun standart interfeysni taqdim etadi, bu esa ilovalarga ma’lumotlar bilan izchil va xavfsiz tarzda o‘zaro ta’sir qilish imkonini beradi. 1.1.9-Rasm. Android-Dagi Kontent Provayderi ishlash sxemasi Kontent provayderlari odatda ma’lumotlar bazalarida, fayllarda yoki boshqa turdagi ma’lumotlar manbalarida saqlangan ma’lumotlarni boshqaradi va boshqa ilovalarga ma’lumotlarni so‘rash, kiritish, yangilash va o‘chirishga ruxsat beradi. Ular, shuningdek, ilovalar o‘rtasida ma’lumotlarni almashish mexanizmini taqdim etishi mumkin, bu bir nechta ilovalarga bir xil ma’lumotlarga kirish va o‘zgartirish imkonini beradi. Kontent provayderlari ContentProvider sinfining quyi sinflari sifatida amalga oshiriladi va ularni AndroidManifest.xml faylida ro‘yxatdan o‘tkazish mumkin. Ular ma’lumotlarni boshqarish uchun query(), insert(), update() va delete() kabi standart usullardan foydalanadilar. Ushbu usullar boshqa ilovalar yoki komponentlar tomonidan ContentResolver ob’ekti yordamida chaqiriladi, bu esa kontent provayderidan ma’lumotlarga kirish uchun standartlashtirilgan interfeysni ta’minlaydi. Kontent provayderlaridan foydalanishning asosiy afzalliklaridan biri shundaki, ular ilovalar uchun ma’lumotlarni almashish va boshqarish uchun xavfsiz va standartlashtirilgan usulni ta’minlaydi. Ma’lumotlarga kirish va o‘zgartirish uchun izchil interfeysni ta’minlash orqali kontent provayderlari ilovalarning ma’lumotlarning maxfiyligi yoki xavfsizligini buzmasdan xavfsiz va xavfsiz tarzda ma’lumotlar bilan o‘zaro ta’sir qilishini ta’minlaydi. Kontent provayderlari Android operatsion tizimining muhim tarkibiy qismi bo‘lib, ilovalar uchun ma’lumotlarni xavfsiz va standartlashtirilgan tarzda boshqarish va almashish imkonini beradi. Kontent provayderlarining kuchidan foydalangan holda, ishlab chiquvchilar yanada moslashuvchan, kuchliroq va ko‘proq o‘zaro ishlashi mumkin bo‘lgan ilovalarni yaratishi mumkin, bu esa foydalanuvchilarga bir nechta ilovalarda izchil va xavfsiz tarzda ma’lumotlarga kirish va boshqarish imkonini beradi. Umuman olganda, ushbu komponentlar va xususiyatlarning kombinatsiyasi Android platformasida mobil ilovalarni yaratish uchun kuchli asos yaratadi. Ushbu komponentlar va xususiyatlardan foydalangan holda, ishlab chiquvchilar yuqori sifatli foydalanuvchi tajribasini ta’minlaydigan sermahsul va jozibali ilovalarni yaratishi mumkin. Androidda Intent - bu xabar almashish ob’ekti bo‘lib, u tizimning boshqa komponentidan harakatni boshlash, translyatsiya yuborish yoki xizmatni ishga tushirish kabi harakatni so‘rash uchun ishlatiladi. Intentni bir komponentdan ikkinchisiga yuboriladigan xabar yoki signal sifatida qarash mumkin, bu komponentlarning bir-biri bilan o‘zaro ta’siri va turli vazifalarni bajarishiga imkon beradi. 1.1.10-Rasm.Intent orqali kamera va email ishlash Activityi Intent ikki qismdan iborat: harakat va ma’lumotlar. Harakat amalga oshiriladigan operatsiya turini belgilaydi, masalan, web-sahifani ochish uchun “KO‘RISH” yoki elektron pochta xabarini yuborish uchun “YUBORISH”. Ma’lumotlar web sahifaning URL manzili yoki elektron pochta manzili kabi operatsiya bajarilishi kerak bo‘lgan ma’lumotlarni belgilaydi.Intent aniq yoki yashirin bo‘lishi mumkin. Aniq Intent maqsadni olishi kerak bo‘lgan komponentni, masalan, muayyan Activity yoki xizmatni belgilaydi. Yashirin Intent komponentni belgilamaydi, aksincha, tizimdagi boshqa komponentlar tomonidan roʻyxatga olingan Intent filtrlari asosida tizimga qaysi komponent Intentni olishi kerakligini aniqlash imkonini beruvchi harakat va maʼlumotlarni belgilaydi. Intents Android tizimida keng qo‘llaniladi, bu turli komponentlarga bir-biri bilan aloqa qilish va turli vazifalarni bajarish imkonini beradi. Masalan, Activity boshqa Activityni boshlash uchun Intentdan foydalanishi mumkin, xizmat translyatsiya xabarini yuborish uchun Intentdan foydalanishi mumkin va eshittirish qabul qiluvchisi xizmatni boshlash uchun Intentdan foydalanishi mumkin. Intents, shuningdek, ilovalar o‘rtasida ma’lumotlarni almashish yoki boshqa ilovada Activityni boshlash kabi ilovalarga o‘zaro ta’sir o‘tkazish imkonini beradi. Broadcast Receivers - bu telefon qo‘ng‘irog‘i qabul qilinganda yoki batareya quvvati kam bo‘lganda kabi butun tizim voqealarini tinglaydigan komponentdir. Voqea sodir bo‘lganda, tizim barcha ro‘yxatdan o‘tgan qabul qiluvchilarga translyatsiya yuboradi, keyinchalik ular voqea asosida muayyan harakatlarni amalga oshirishi mumkin. Android Framework: Android ramkasi ilovalarni ishlab chiqishni soddalashtiradigan oldindan tuzilgan sinflar va funktsiyalar to‘plamini taqdim etadi. Ramka foydalanuvchi interfeysi, ma’lumotlarni saqlash, tarmoq va boshqa ko‘plab funktsiyalar uchun komponentlarni o‘z ichiga oladi. 1.1.11-Rasm.Androidda Broadcast Receivers Androiddagi UI (eng. User Interface - foydalanuvchi interfeysi) komponentlari foydalanuvchilar turli vazifalarni bajarish va ilova orqali harakatlanish uchun o‘zaro aloqada bo‘ladigan vizual elementlardir. Androiddagi ba’zi asosiy UI komponentlariga quyidagilar kiradi: Activities: Activity foydalanuvchi interfeysi bilan bitta ekranni ifodalaydi. Unda matn maydonlari, tugmalar va tasvirlar kabi turli xil UI komponentlari bo‘lishi mumkin. Fragmentlar - bu moslashuvchan va dinamik UI yaratish uchun boshqa fragmentlar bilan birlashtirilishi mumkin bo‘lgan qayta foydalanish mumkin bo‘lgan UI komponentlari. Ular turli ekran o‘lchamlari va yo‘nalishlariga moslasha oladigan murakkabroq foydalanuvchi interfeyslarini yaratish uchun ishlatiladi. Views: Ko‘rishlar Android UI komponentlarining asosiy qurilish bloklari hisoblanadi. Ular tugmalar, matn maydonlari, tasvirlar va foydalanuvchilar bilan muloqot qilishlari mumkin bo‘lgan boshqa interaktiv elementlarni o‘z ichiga oladi. Layouts: - bu UI komponentlarini saqlaydigan va ularning ekranda joylashishini aniqlaydigan konteynerlar. Ular ilovaning foydalanuvchi interfeysining umumiy strukturasini yaratish uchun ishlatiladi. Intents: Niyatlar ilovaning turli komponentlari, masalan, Activity, xizmatlar va translyatsiya qabul qiluvchilari oʻrtasida aloqa oʻrnatish uchun ishlatiladi. Ular Activityni boshlash, xabar yuborish yoki tizim hodisasini ishga tushirish uchun ishlatiladi. Adapterlar: Adapterlar ma’lumotlarni ro‘yxatlar yoki panjaralar kabi UI komponentlariga ulash uchun ishlatiladi. Ular katta hajmdagi ma’lumotlarni tuzilgan tarzda ko‘rsatish usulini ta’minlaydi. Bular Androiddagi asosiy UI komponentlaridan faqat bir nechtasi. Keng ko‘lamli foydalanuvchi interfeyslari va tajribalarini yaratish uchun ularni turli usullar bilan birlashtirish mumkin. Android operatsion tizimi sermahsul va mukammal mobil ilovalar yaratish uchun ishlatilishi mumkin bo‘lgan keng ko‘lamli UI komponentlarini taqdim etadi. Quyida Androidda eng ko‘p ishlatiladigan UI komponentlari keltirilgan: TextView: - bu komponentasi matnni ekranda aks ettirish uchun ishlatiladi. U oddiy matnni, formatlangan matnni yoki hatto giperhavolalarni ko‘rsatish uchun ishlatilishi mumkin. EditText: - bu komponenti foydalanuvchilarga matn kiritish imkonini berish uchun ishlatiladi. U foydalanuvchi nomi, parol yoki qidiruv so‘rovini kiritish kabi turli maqsadlarda ishlatilishi mumkin. Button: - bu komponenti bosiladigan tugmalarni yaratish uchun ishlatiladi. U amalni boshlash yoki ilova ichidagi boshqa ekranga o‘tish uchun ishlatilishi mumkin. ImageButton: - bu komponenti matn o‘rniga tasvirni aks ettiruvchi tugmalar yaratish uchun ishlatiladi. U maxsus piktogramma yaratish yoki foydalanuvchiga vizual fikr bildirish uchun ishlatilishi mumkin. ImageView: - bu komponenti tas’virlarni ekranda aks ettirish uchun ishlatiladi. U fotosuratlar, piktogrammalar yoki boshqa grafiklarni ko‘rsatish uchun ishlatilishi mumkin. ProgressBar: - bu komponenti operatsiya davom etayotganligini ko‘rsatish uchun ishlatiladi. U uzoq davom etadigan operatsiya sodir bo‘lganda, masalan, internetdan ma’lumotlarni yuklab olishda foydalanuvchiga fikr bildirish uchun ishlatilishi mumkin. ListView: - bu komponenti ekrandagi elementlar ro‘yxatini ko‘rsatish uchun ishlatiladi. U kontaktlar, xabarlar yoki boshqa ma’lumotlar ro‘yxatini ko‘rsatish uchun ishlatilishi mumkin. RecyclerView: - bu komponenti ListViewga o‘xshaydi, lekin ko‘proq moslashuvchanlik va ishlashni ta’minlaydi. U katta ma’lumotlar to‘plamlarini samarali ko‘rsatish uchun mo‘ljallangan va maxsus tartiblar va animatsiyalarni amalga oshirish uchun ishlatilishi mumkin. Spinner: - bu komponenti ochiladigan variantlar ro‘yxatini yaratish uchun ishlatiladi. U foydalanuvchiga til yoki valyuta kabi roʻyxatdagi variantni tanlashga ruxsat berish uchun ishlatilishi mumkin. WebView: - bu komponenti ilova ichidagi web-sahifalarni ko‘rsatish uchun ishlatiladi. U internetdagi kontentni ko‘rsatish yoki Android ilovasiga web ilovalarni joylashtirish uchun ishlatilishi mumkin. Bular Androidda eng ko‘p qo‘llaniladigan UI komponentlaridan ba’zilari. Android platformasi ilovaning o‘ziga xos ehtiyojlariga mos keladigan maxsus maketlar va animatsiyalarni yaratish uchun ishlatilishi mumkin bo‘lgan sermahsul UI komponentlarini taqdim etadi. Xizmatlar: Xizmatlar odatda ilova manifest faylida aniqlanadi va maqsad yoki boshqa komponentdan xizmatga ulanish orqali ishga tushiriladi. Xizmatlar fonda cheksiz ishlashi mumkin va xabarlar yoki umumiy xotira orqali boshqa komponentlar bilan bog‘lanishi mumkin. Ikki turdagi xizmatlar mavjud: boshlangan xizmatlar va bog‘langan xizmatlar. Boshlangan xizmatlar bitta vazifani bajarish va keyin to‘xtash uchun ishlatiladi, bog‘langan xizmatlar esa boshqa komponentlarning xizmat bilan o‘zaro aloqasi uchun interfeysni ta’minlash uchun ishlatiladi. Xizmatlar Androidda xizmatlar fonda ishlaydigan va uzoq muddatli vazifalarni bajaradigan yoki foydalanuvchi interfeysini talab qilmaydigan funksionallikni ta’minlaydigan dastur komponentining bir turidir. Xizmatlar faoliyatlar yoki boshqa xizmatlar kabi boshqa komponentlar tomonidan ishga tushirilishi mumkin va ular aniq to‘xtatilmaguncha yoki tizim ularni to‘xtatmaguncha muddatsiz ishlashi mumkin. Android-dagi xizmatlar fonda musiqa ijro etish, internetdan ma’lumotlarni yuklab olish, davriy tekshiruvlar yoki yangilanishlarni amalga oshirish yoki tizim darajasidagi boshqa vazifalarni bajarish kabi turli maqsadlarda ishlatilishi mumkin. Ular Xizmat sinfining quyi sinflari sifatida amalga oshiriladi va AndroidManifest.xml faylida ro‘yxatdan o‘tkazilishi mumkin. Androidda ikki turdagi xizmatlar mavjud: ishga tushirilgan xizmatlar va bog‘langan xizmatlar. Boshlangan xizmatlar odatda foydalanuvchi interfeysi bilan o‘zaro aloqani talab qilmaydigan yoki fonda ishlaydigan vazifalar uchun ishlatiladi. Ular startService() usuli yordamida ishga tushiriladi va ularni ishga tushirgan komponent yo‘q qilingandan keyin ham ishlashni davom ettirishi mumkin. Boshlangan xizmatni to‘xtatish uchun stopService() usuli qo‘llaniladi.Boshqa tomondan, bog‘langan xizmatlar odatda boshqa komponentlar bilan o‘zaro aloqani talab qiladigan yoki mijoz-server interfeysi turini ta’minlaydigan vazifalar uchun ishlatiladi. Ular bindService() usuli yordamida ishga tushiriladi va ularni ishga tushirgan komponentdan interfeys orqali ular bilan o‘zaro aloqada bo‘lishini talab qiladi. Bog‘langan xizmatlar, ular bilan bog‘langan mijozlar qolmaganda yoki tizim ularni to‘xtatganda yo‘q qilinadi. Umuman olganda, xizmatlar Android operatsion tizimining muhim tarkibiy qismi bo‘lib, ilovalar uchun uzoq muddatli vazifalarni bajarish va foydalanuvchi interfeysiga aralashmasdan fon funksiyalarini ta’minlash imkonini beradi. Xizmatlarning kuchidan foydalangan holda, ishlab chiquvchilar optimal ishlash va samaradorlikni saqlab, sermahsulroq, yanada mukammal foydalanuvchi tajribasini ta’minlaydigan ilovalar yaratishi mumkin. Android ko‘plab mobil ilovalarni qo‘llab-quvvatlaydigan mashhur mobil operatsion tizimdir. Android mobil ilovalarini turli manbalardan, masalan, Google Play Store, Amazon Appstore yoki toʻgʻridan-toʻgʻri dastur ishlab chiqaruvchisi web-saytidan yuklab olish va oʻrnatish mumkin. Google Play doʻkoni Android ilovalari uchun asosiy manba boʻlib, 3 milliondan ortiq ilovalar, jumladan, oʻyinlar, ijtimoiy media ilovalari, mahsuldorlik ilovalari va boshqalarga kirish imkonini beradi. Google Play do‘koni ko‘pgina Android qurilmalarida oldindan o‘rnatilgan bo‘lib, ishlab chiquvchilar uchun o‘z ilovalarini nashr etish va tarqatish uchun markazlashtirilgan platformani taqdim etadi.Google Play do‘konidan tashqari, Android ilovalarini taklif qiluvchi boshqa ilovalar do‘konlari ham mavjud, masalan, mashhur Android ilovalari va o‘yinlari tanloviga kirish imkonini beruvchi Amazon Appstore va tanlangan ilovalar tanlovini taklif qiluvchi Samsung Galaxy Store. va Samsung qurilmalari uchun o‘yinlar. Android ilovalarini to‘g‘ridan-to‘g‘ri dastur ishlab chiqaruvchisi web- saytidan yoki boshqa uchinchi tomon ilovalari do‘konlaridan yuklab olish va o‘rnatish ham mumkin. Biroq, Google Play do‘konidan tashqarida ilovalarni yuklab olish va o‘rnatishda ehtiyot bo‘lish kerak, chunki bu ilovalar rasmiy ilovalar do‘konida mavjud bo‘lganlar kabi tekshirish va sinovdan o‘tmagan bo‘lishi mumkin. Umuman olganda, Android mobil ilovalar uchun sermahsul va xilma-xil ekotizimni taqdim etadi, har bir foydalanuvchining ehtiyojlari va manfaatlariga mos keladigan keng doiradagi ilovalarni taklif etadi. Android quvvatidan foydalangan holda, ishlab chiquvchilar kuchli, moslashuvchan va juda moslashtirilgan ilovalarni yaratishi mumkin, bu esa foydalanuvchilarga o‘z mobil qurilmalari bilan har qachongidan ham ko‘proq narsani qilish imkonini beradi.Statista ma’lumotlariga ko‘ra, 2021 - yil holatiga ko‘ra, Android dunyodagi eng ko‘p qo‘llaniladigan mobil operatsion tizim bo‘lib, global mobil operatsion tizim bozorining taxminan 73 foizini tashkil qiladi. Bu shuni anglatadiki, mobil ilovalarning katta qismi Android platformasi uchun mo‘ljallangan va Android ilovalari uchun asosiy ilovalar do‘koni bo‘lgan Google Play do‘koni 3 milliondan ortiq ilovalarga kirishni taklif qiladi. IOS, Windows va boshqalar kabi boshqa mobil operatsion tizimlar ham o‘zlarining ilovalari do‘konlariga ega bo‘lsada, bozordagi Android qurilmalarining ko‘pligi uni eng katta auditoriyaga kirishni maqsad qilgan ilovalar ishlab chiquvchilari uchun asosiy maqsad qilib qo‘ydi. Bu Android ilovalari ekotizimining gullab-yashnashiga olib keldi, har qanday ehtiyoj va qiziqishlarga mos keladigan turli xil ilovalar mavjud. Android ilovalarini yaratish uchun foydalaniladigan dasturlash tillari Android ilovalarini yaratish uchun ishlatilishi mumkin bo‘lgan bir nechta dasturlash tillari mavjud, ammo eng ko‘p ishlatiladigan tillar Java va Kotlin. Ikkala til ham Google tomonidan rasman qo‘llab-quvvatlanadi va mahalliy Android ilovalarini ishlab chiqish uchun ishlatilishi mumkin. Java ko‘p yillar davomida Android ilovalarini ishlab chiqish uchun asosiy dasturlash tili bo‘lib kelgan va ishlab chiquvchilar tomonidan keng qo‘llaniladi. Bu portativ, xavfsiz va mustahkam bo‘lishi uchun mo‘ljallangan umumiy maqsadli, ob’ektga yo‘naltirilgan dasturlash tilidir. Java o‘rganish nisbatan oson va ishlab chiquvchilar va resurslarning katta hamjamiyatiga ega. Kotlin - bu yangi dasturlash tili bo‘lib, u 2017 yilda Google tomonidan Android uchun Java-ga zamonaviy muqobil sifatida taqdim etilgan. Kotlin ham umumiy maqsadli, ob’ektga yo‘naltirilgan tildir, lekin u Java-ga qaraganda ixchamroq va ifodali bo‘lishi uchun yaratilgan bo‘lib, kodni yozish va saqlashni osonlashtiradi. Kotlin Java bilan to‘liq o‘zaro ishlaydi, ya’ni ishlab chiquvchilar bitta loyihada ikkala tildan foydalanishlari va mavjud Java kodlarini osongina Kotlinga o‘tkazishlari mumkin. Android ilovalarini ishlab chiqish uchun ishlatilishi mumkin bo‘lgan boshqa dasturlash tillariga C++, C# va Python kiradi, garchi bu tillar Androidni ishlab chiqishda kamroq qo‘llaniladi. Umuman olganda, Java va Kotlin Android ilovalarini ishlab chiqish uchun eng mashhur va keng qo‘llaniladigan dasturlash tillari bo‘lib, ikkala til ham ishlab chiquvchilarga mahalliy Android ilovalarini yaratish uchun kuchli va moslashuvchan platformani taklif qiladi. Java va Kotlindan tashqari, Android dasturchilari ham yuqori sifatli Android ilovalarini yaratish uchun bir qator vositalar va ramkalardan foydalanadilar. Androidni ishlab chiqish uchun eng mashhur ramkalar va kutubxonalardan ba’zilari:Android Studio: Android Studio - bu Android ilovalarini ishlab chiqish uchun rasmiy integratsiyalashgan ishlab chiqish muhiti (IDE). U Android ilovalarini yaratish, sinovdan o‘tkazish va disk raskadrovka qilish uchun bir qator vositalar va xususiyatlarni taqdim etadi, jumladan, ilg‘or kod muharriri, vizual tartib muharriri va bir qator disk raskadrovka va ish Activityini tahlil qilish vositalari. React Native – bu Facebook tomonidan ishlab chiqilgan ochiq manbali ramka bo‘lib, ishlab chiquvchilarga JavaScript dasturlash tilidan foydalangan holda Android va iOS uchun platformalararo mobil ilovalar yaratish imkonini beradi. U ishlab chiquvchilarga yuqori sifatli mobil ilovalarni tez va samarali yaratishga yordam beradigan bir qator oldindan tuzilgan komponentlar va vositalarni taqdim etadi. Flutter – bu Google tomonidan ishlab chiqilgan ochiq manbali mobil ilovalarni ishlab chiqish tizimi bo‘lib, u ishlab chiquvchilarga bitta kod bazasidan foydalangan holda Android, iOS va internet uchun yuqori sifatli, mahalliy kompilyatsiya qilingan mobil ilovalarni yaratish imkonini beradi. Flutter Dart dasturlash tilidan foydalanadi va ishlab chiquvchilarga chiroyli, sezgir va tezkor mobil ilovalar yaratishda yordam berish uchun bir qator oldindan tuzilgan vidjetlar va vositalarni taqdim etadi. RxJava – bu Android ilovalarini ishlab chiqish uchun mashhur reaktiv dasturlash kutubxonasi. Bu ishlab chiquvchilarga real vaqtda ma’lumotlar va hodisalarga javob beradigan kod yozish imkonini beradi, bu esa murakkab va sezgir Android ilovalarini yaratishni osonlashtiradi. Retrofit – bu Android ilovalarini ishlab chiqish uchun mashhur tarmoq kutubxonasi. Bu HTTP so‘rovlarini bajarish va javoblarni qayta ishlash jarayonini soddalashtiradi, bu esa ishlab chiquvchilarga tarmoqqa ulangan Android ilovalarini yaratishni osonlashtiradi. Bular Android ishlab chiquvchilari yuqori sifatli Android ilovalarini yaratish uchun foydalanadigan ko‘plab vositalar va ramkalarning bir nechtasi. Ushbu vositalar va tillarning kuchidan foydalangan holda, ishlab chiquvchilar kuchli, moslashuvchan va juda moslashtirilgan mahalliy Android ilovalarini yaratishi mumkin, bu esa foydalanuvchilarga sermahsul va mukammal mobil tajribani taklif qiladi. 1.2. Android ilovalar komponentalari Ilova komponentlari Android ilovasining asosiy qurilish bloklari hisoblanadi. Har bir komponent tizim yoki foydalanuvchi sizning ilovangizga kirishi mumkin bo‘lgan kirish nuqtasidir. Ba’zi komponentlar boshqalarga bog‘liq. To‘rt xil turdagi dastur komponentlari mavjud: Activity; xizmatlar; eshittirish qabul qiluvchilar; kontent provayderlari. Har bir tur ma’lum bir maqsadga xizmat qiladi va komponentning qanday yaratilishi va yo‘q qilinishini belgilaydigan alohida hayot aylanishiga ega. Keling, Activity va fragmentlar kabi komponentlardan boshlaylik va tizim ularning ishini to‘xtatishi mumkin bo‘lgan holatlarni ko‘rib chiqaylik. Activity va parchalar Sinovchi nuqtai nazaridan, Activityni elementlar ko‘rsatiladigan ekran sifatida ko‘rish mumkin. Ilova kamida bitta Activitydan iborat. Aslida, Activity UI komponentlari uchun konteynerdir. Agar Activity konteyner bo‘lsa, u holda fragmentlar Activityning UI komponentlari hisoblanadi. Fragment, shuningdek, o‘z navbatida, UI komponentlari uchun konteynerdir. Brauzer bilan ajoyib o‘xshashlik mavjud. Activity va fragmentlarning bir-biri bilan qanday bog‘liqligini ko‘proq vizual tasvirlash uchun. Tasavvur qiling, bizda bitta brauzerning bir nechta oynalari ochiq. Bular bitta dastur doirasidagi bir nechta harakatlar. 1.2.1-Rasm.Web Poge ko‘rinish oynasi Bir oynada bir nechta yorliqlar ochilishi mumkin. Bu Activity ichidagi parchalar. 1.2.2-Rasm. Activity ichidagi parchalar ko‘rinishi Fragmentlar Activitylarga qaraganda biroz tezroq. Ammo zamonaviy qurilmalarda farq deyarli sezilmaydi. Vazifaning qanday echilishiga qarab, ishlab chiquvchi dasturni faqat Activity yoki fragmentlar yordamida Activity bo‘yicha yozishi mumkin. Operatsion tizim, dasturning hayot aylanishini boshqarishda, dasturni faollashtirish bilan aniq ishlaydi. Shuning uchun, hozircha bizni Activityning hayot aylanishi qiziqtiradi. Foydalanuvchilar ko‘p sonli ilovalarni ishga tushiradilar, ya’ni ko‘plab jarayonlar faollashtirish bilan yaratiladi. Har bir ishlaydigan jarayon qurilmaning operativ xotirasini iste’mol qiladi va u kamroq va kamroq bo‘ladi. Ammo Android jarayonlarni diqqat bilan kuzatib boradi va yuqoriroq ustuvor ishlarni bajarish uchun resurslar etishmasligi bo‘lsa, kamroq ustuvor bo‘lganlarni yopadi. Keling, dastur qaysi nuqtada tizimning bunday qarorlariga “zaif” ekanligini va bu uning ishlashiga qanday ta’sir qilishi mumkinligini ko‘rib chiqaylik. Activityning hayot aylanishi Ishga tushirilgandan so‘ng va tugallanmaguncha, Activity har doim statuslardan birida bo‘ladi. Sinovda bu biz uchun potentsial muammoli vaziyatlarni va Interrupt testi kontekstida tushunishimiz uchun foydalidir. Activity tugashidan oldin tegishli hayot aylanish usullari chaqiriladi. OnPause() usuli barcha tinglovchilarni va interfeys yangilanishlarini to‘xtatishi kerak. OnStop() usuli ilova ma’lumotlarini saqlashi kerak. Nihoyat, onDestroy() usuli Activityga ajratilgan har qanday resurslarni chiqaradi. Agar foydalanuvchi tizim hodisasi tomonidan to‘xtatilgan dasturga qaytsa, onResume() usuli chaqiriladi. Saqlangan ma’lumotlarga asoslanib, tinglovchilar qayta ro‘yxatdan o‘tishlari va interfeys yangilanishlarini almashtirishlari mumkin. 1.2.3-Rasm. onResume() usuli chaqirish sxemasi Activityning hayot aylanishi quyidagi holatlar bilan ifodalanadi 1.2.1-Jadval Holati Tushuntirish Среаted Aktivity yaratilgan foydalanuvchi hali u bilan aloqa qila olmaydi Started Aktivity ishga tushirildi foydalanuvchi hali u bilan aloqa qila olmaydi, lekin u allaqachon ko‘rinib turibdi Resumed Faollashtirish ekranda ko‘rinadi va foydalanuvchi u bilan o‘zaro aloqada bo‘lishi mumkin Paused Aktivit ekranda qisman ko‘rinadi va foydalanuvchi u bilan aloqa qila olmaydi ( skil ko‘p oynali rejimda to‘liq ko‘rinadi, ammo hozirgi vaqtda Foydalanuvchi boshqa aktivit bilan o‘zaro ta’sir qiladi) Stopped Aktivity to‘xtatildi va ekranda ko‘rinmaydi, lekin hali ham xotirada saqlanadi Destroyed Aktivit yo‘q qilinadi va endi xotirada saqlanmaydi Bunga quyidagi misollarni keltirib o‘tamiz. Ular sinov paytida biz tez-tez duch keladigan asosiy holatlarni qamrab oladi. Ilovaning birinchi ishga tushirilishi 1.2.4-Rasm. Ilova ishga tushirish sxemasi Ilova birinchi marta ishga tushirilganda ilovadagi asosiy Activity yaratiladi va yuklanadi. Activity foydalanuvchi bilan o‘zaro aloqada bo‘lishi mumkin. 1.2.5-Rasm. Birinchi ekrandan ikkinchisiga o‘tish 1-qadam: Birinchi ekrandan ikkinchisiga o‘tayotganda birinchi ekranning Activity to‘xtatiladi. Ushbu nuqtada kiritilgan ma’lumotlarni saqlash va resurslarni ko‘p talab qiladigan operatsiyalarni to‘xtatish (masalan, animatsiyalarni o‘ynash) kabi harakatlar bajarilishi mumkin. Bu juda tez sodir bo‘ladi va foydalanuvchi uchun sezilmaydi. 2, 3, 4-qadam: Ikkinchi ekran faollashtirildi. 5-qadam: Birinchi ekranni faollashtirish to‘xtaydi. Bundan tashqari agar Android hozirda xotirani bo‘shatishga harakat qilsa, birinchi ekranni faollashtirish qo‘shimcha ravishda “Destroyed” holatiga o‘tishi mumkin. “ Paused ” holat nima ekanligini yaxshiroq tushunish uchun quyidagi vaziyatni tasavvur qilaylik: Alert paydo bo‘ldi. Biz u bilan muloqot qila olmaymiz, lekin ayni paytda biz uni ko‘ramiz. 1.2.6-Rasm. Ikkinchi ekrandan birinchi ekranga qaytish Ikkinchi ekrandan birinchisiga qaytganingizda, deyarli bir xil narsa sodir bo‘ladi, faqat birinchi faollashtirish yangidan yaratilmaydi. U xotiradan yuklanadi (agar tizim tomonidan yo‘q qilinmagan bo‘lsa). Ikkinchi Activity to‘xtatilgandan so‘ng yo‘q qilinadi, chunki u o‘tish stekidan chiqariladi. 1.2.7-Rasm. Ilovani minimallashtirish va undan chiqish Ilovani minimallashtirishda (masalan, Home tugmasi) faollashtirish to‘xtaydi. Dasturni ochishda aktivity to‘g‘ri tiklanishi va ma’lumotlar saqlanib qolishi muhimdir. Barcha ekranlarda biz dasturni minimallashtirish va kengaytirishni tekshirishga harakat qilamiz. Ushbu holat kirish shakllarida dolzarbdir. Agar biz juda ehtiyotkorlik bilan yozgan xat matni dasturni minimallashtirishda o‘chirilsa, bu maqsadga muvofiq bo‘lmaydi. Bunda ko‘plab maydonlardan tashkil topgan shakl bo‘sh bo‘lib qoladi. Ilovadan chiqishda (apparat tugmachasini orqaga qaytarish orqali) 1 va 2- qadamga qo‘shimcha ravishda 3-qadam bajariladi. Aktivity yo‘q qilinadi va keyingi safar dasturni ishga tushirganingizda yangidan yaratiladi. Ekranni aylantirish Xatolarni keltirib chiqaradigan muhim holatlardan biri bu Ekranni aylantirishdir. Ma’lum bo‘lishicha, Activity ekrani aylantirilganda to‘liq hayot aylanishi sodir bo‘ladi. Ya’ni, u yo‘q qilinadi va yana yaratiladi. Shuning uchun har bir burilishda. Shuning uchun, yana har bir ekranda aylanishni tekshiring. 1.2.8-Rasm. Activity ekrani aylantirsh Ekranning gorizontal yo‘nalishini qo‘llab-quvvatlash bir tomondan, faollikning barcha bosqichlari to‘g‘riligini tekshirishga imkon beradi, boshqa tomondan esa, sinov holatlari sonini sezilarli darajada oshiradi. Ko‘p oynali rejim Android 7-dan boshlab (Android 6-dan eksperimental xususiyat sifatida) ko‘p oynali rejim mavjud bo‘ldi. Foydalanuvchilar bir vaqtning o‘zida ekranda bir nechta ilovalarni ko‘rish imkoniyatiga ega bo‘lishadi. Bundan tashqari faqat foydalanuvchi o‘zaro aloqada bo‘lgan dastur “Resumed” holatida, qolganlari esa “Paused” holatiga o‘rnatiladi. Don’t keep activities (Faoliyatni davom ettirmang) Agar ilova ekranni aylantirishni qo‘llab-quvvatlamasa, faollikning to‘liq aylanishini tekshirish albatta talab qilinadi. Agar operativ xotira (RAM) uzoq vaqt davomida tozalanmagan bo‘lsa, sizning ilovangizga parallel ravishda ba’zi bir resurslarni talab qiladigan dastur (masalan, PokemonGo) ishga tushirilganda Android boshqa dasturga o‘tishni sizning faolligingiz bilan bajariladi. Agar ekran aylanishini qo‘llab-quvvatlamasa, dasturning to‘g‘ri ishlashini tekshirish ishlab chiquvchi sozlamalarida “don't keep activities” katakchasini o‘rnating va dasturni qayta ishga tushiring. Bunday holda, xotira etarli bo‘lmaganda vaziyat taqlid qilinadi va Android foydalanuvchi hozirda o‘zaro aloqada bo‘lmagan barcha faolliklarni yo‘q qiladi va faqat faol bo‘lganlarni qoldiradi. Broadcast receiver (Eshittirish qabul qiluvchisi) Broadcast qabul qiluvchi komponenti tashqi hodisalarni boshqarish uchun ishlatiladi. Ilova tizim va boshqa dastur hodisalariga obuna bo‘lishi mumkin. Android ishlamayotgan bo‘lsa ham, voqeani obunachi ilovasiga yetkazadi va shu bilan uni ishga tushirishga “rag‘batlantirishi” mumkin. Sinov paytida biz uchun qanday hodisalar kutilayotganini va ular qanday qayta ishlanishini tushunish muhimdir. Misol uchun, kodda dastur ma’lum bir raqamdan xabar kutayotgani va SMS- ga kirish huquqiga ega ekanligi oldindan yozilgan. Foydalanuvchi maxfiy kodni olganida, Broadcast qabul qiluvchisi bildirishnoma oladi va operatsiyani tasdiqlash maydoniga SMS kodi kiritiladi. Services(Xizmatlar) Androidda yana bir juda muhim narsa Serviclardir. Ular fon vazifalarini bajarish uchun kerak. Bunday holda, dastur hozirda foydalanuvchi tomonidan ochilishi shart emas. Serviclar bir nechta ish rejimlariga ega. Foydalanuvchi xizmat ishlayotganini ko‘rishi yoki umuman sezmasligi mumkin. Agar siz dasturchidan sehrli “Servic” so‘zini eshitgan bo‘lsangiz, unda qanday ish mantig‘i qo‘yilganligini bilib olasiz. Servic nima qiladi va u o‘zini qanday namoyon qiladi? Ilova faol bo‘lmaganda xizmat qanday ishlaydi? Servic uzilishdan keyin tiklanadimi (kiruvchi qo‘ng‘iroq, telefonni qayta ishga tushirish)? Bu erda sinov senariylarini loyihalashda asosiy maslahat-bu xizmat ishlamay qolishi yoki boshqa xizmat bilan ziddiyatni boshlashi mumkin bo‘lgan foydalanuvchi holatlarini ko‘rib chiqish. Eng hiyla-nayrang holatlar: xizmat boshlanganda va foydalanuvchi buni kutmagan bo‘lsa. Bunday holda, xizmatni ishga tushirishga nima sabab bo‘lishi mumkinligini aniqlash foydalidir. Eng sodda va zararsiz — bu qo‘shimcha parametrlarsiz xizmatlar. Qo‘lda sinovdan o‘tkazilganda, biz ko‘pincha ularning ishini sezmaymiz. Masalan, agar siz ma’lumotlarni tahlil tizimiga yuborishingiz kerak bo‘lsa, unda bunday serviclar ko‘pincha ushbu vazifa uchun ishlatiladi. Xizmatlarning yana bir turi bu sticky-serviclar. Agar bunday xizmatning ishi to‘satdan tugasa, unda bir muncha vaqt o‘tgach, sticky-servic “qayta tug‘iladi”. Shunisi e‘tiborga loyiqki, har safar “tiklanish” dan oldingi davr tizimning ishlashiga kamroq xalaqit berishi uchun ko‘payadi. Ba’zi dasturlarda Sticky xizmatining misoli fayllarni qurilmaga yuklab olishi mumkin. Ehtimol, agar siz “qopqoq” da yuklab olishni qayta tiklasangiz, u bir muncha vaqt o‘tgach tiklanishi va fayllarni yuklab olishni davom ettirishi mumkinligini payqadingiz. Eng muhim xizmatlar — bu foydalanuvchi o‘z ishini “his qiladigan” va u uchun muhim bo‘lgan xizmatlar. Ular deyiladi foreground-xizmatlar va ular, albatta, foydalanuvchi yopolmaydigan “qopqoq” da yozuvga ega. Tizim ularni oxirgi marta yo‘q qiladi, chunki bunday xizmatlarning ustuvorligi eng yuqori. Masalan, musiqa pleyeri. Agar siz dasturni minimallashtirsangiz va hatto uni yopsangiz, u holda o‘yinchi foydalanuvchi uni pauza qilmaguncha yoki yopmaguncha o‘ynashni davom ettiradi. Yoki boshqa dastur yoki tizim uni to‘xtatmaguncha. Xususan, musiqa pleyeri uchun juda ko‘p variantlar bo‘lishi mumkin: kiruvchi qo‘ng‘iroq, boshqa musiqiy dastur, ovozli yozuv. Biz musiqa pleyerlari haqida gaplashayotganimiz sababli, audiofokus kabi tushunchani ta‘kidlash kerak. Audiofokus Tasavvur qilaylik, bir nechta audio pleerlarni ishga tushirganingizda, ularning barchasi bir vaqtning o‘zida o‘ynaydi. Bu deyarli hech kimga yoqmaydi. Bu erda tizimdan dastur tomonidan so‘raladigan audiofokus qutqarish uchun keladi. Ovozli fokus uchun oddiy so‘rov bo‘lsa, tizim, xuddi shunday, barcha ishlaydigan ilovalarni xabardor qiladi: “Endi boshqa dasturda gapiradi, iltimos, jim bo‘ling.” Bu kulgili, lekin bu so‘rov formatida sodir bo‘ladi. Agar sizning ilovangiz juda muloyim bo‘lmasa, u so‘rovni e‘tiborsiz qoldirishi mumkin. Bizning vazifamiz bu vaziyatlarni tekshirishdir. Audiofokus so‘rovining murosali rejimi “audiofokusni vaqtincha ushlab turish”deb nomlanadi. Bu shuni anglatadiki, audiofokus sizning ilovangizga qaytadi, chunki uni to‘xtatgan kishi tizimga audiofokus bo‘shatilganligi to‘g'risida signal beradi. Audiofokus so‘rovining yana bir turi — “duck”. U boshqa ilovalardan jim bo‘lmaslikni, balki fokusni so‘ragan ilovaning ovozi eshitilayotganda ovoz balandligini yarmiga kamaytirishni so‘raydi. Masalan, bunday so‘rov messenjerda yangi xabar haqida notifikatsiya ovozini ijro etishda ishlatiladi. Audiofokusni sinash juda muhimdir, chunki bu erda hamma narsa ishlab chiquvchilarning vijdoniga bog‘liq va tizim nizolarni hal qilishda alohida ishtirok etmaydi. Xo‘sh, agar xato hali ham foydalanuvchilarga etib borsa, unda ikkilanmang, ular sizga bu haqda tezda xabar berishadi. Bu, ehtimol, hozircha tugashi mumkin. Albatta, hali ko‘p tafsilotlar mavjud va sinov paytida mutlaqo hamma narsani hisobga olishning hojati yo‘q. Mening tajribamga ko‘ra, sinovchi dastur nimadan iboratligini va uning qanday ishlashini tushunishi kerak. Bu dasturning biznes mantig‘i va operatsion tizimning xususiyatlari chorrahasida yuzaga keladigan qiyin xatolarni tahlil qilishga imkon beradi. Ayniqsa, Android haqida gap ketganda. Kontent provayderlari Kontent provayderi fayl tizimida, SQLite ma’lumotlar bazasida, internetda yoki ilovangiz kirishingiz mumkin bo‘lgan har qanday boshqa doimiy xotirada saqlashingiz mumkin bo‘lgan umumiy ilova ma’lumotlar to‘plamini boshqaradi. Kontent provayderi orqali, agar kontent provayderi ruxsat bergan bo‘lsa, boshqa ilovalar ma’lumotlarni so‘rashi yoki o‘zgartirishi mumkin. Misol uchun, Android tizimi foydalanuvchining aloqa ma’lumotlarini boshqaradigan kontent provayderini taqdim etadi. Shunday qilib, tegishli ruxsatlarga ega bo‘lgan har qanday dastur ContactsContract.Data kabi kontent provayderiga ma’lum bir shaxs haqidagi ma’lumotlarni o‘qish va yozish uchun so‘rashi mumkin. Kontent provayderini ma’lumotlar bazasi abstraktsiyasi deb o‘ylash jozibali, chunki bu keng tarqalgan foydalanish uchun ularda juda ko‘p API o‘rnatilgan va mahalliy yordam mavjud. Biroq, tizim dizayni nuqtai nazaridan, ular boshqa asosiy maqsadga ega. Tizim uchun kontent provayderi URI sxemasi bilan aniqlangan nomli ma’lumotlar elementlarini nashr qilish uchun ilovaga kirish nuqtasidir. Shunday qilib, dastur o‘zida mavjud bo‘lgan ma’lumotlarni URI nom maydoniga qanday xaritalashni xohlashini hal qilishi mumkin, bu URI-larni boshqa ob’ektlarga o‘tkazadi, bu esa o‘z navbatida ma’lumotlarga kirish uchun ulardan foydalanishi mumkin. Android tizimining o‘ziga xos jihati shundaki, har qanday dastur boshqa dastur komponentini ishga tushirishi mumkin. Misol uchun, agar siz foydalanuvchi qurilma kamerasidan foydalanib suratga olishni istasangiz, buni amalga oshiradigan boshqa ilova ham bo‘lishi mumkin va sizning ilovangiz o‘zi suratga olish harakatini ishlab chiqish o‘rniga undan foydalanishi mumkin. Kamera ilovasidagi kodni kiritishingiz yoki hatto unga havola qilishingiz shart emas. Buning o‘rniga, siz shunchaki suratga oladigan kamera ilovasida amalni boshlashingiz mumkin. Tugallangach, surat siz ishlatishingiz uchun ilovangizga qaytariladi. Foydalanuvchiga kamera aslida ilovangizning bir qismidek tuyuladi. Tizim komponentni ishga tushirganda, u hali ishlamayotgan bo‘lsa, ushbu dastur uchun jarayonni boshlaydi va komponent tomonidan talab qilinadigan sinflarning namunalarini yaratadi. Misol uchun, agar ilovangiz suratga oladigan kamera ilovasida amalni boshlasa, bu amal ilovangiz jarayonida emas, balki kamera ilovasiga tegishli jarayonda ishlaydi. Demak, boshqa tizimlardagi ilovalardan farqli o‘laroq, Android ilovalarida bitta kirish nuqtasi yo‘q (main() funksiyasi yo‘q). Tizim har bir ilovani boshqa ilovalarga kirishni cheklovchi fayl ruxsatlari bilan alohida jarayonda ishga tushirganligi sababli, ilovangiz boshqa ilovadan komponentni bevosita faollashtira olmaydi. Biroq, Android tizimi mumkin. Komponentni boshqa ilovada faollashtirish uchun tizimga ma’lum komponentni ishga tushirish niyatingiz haqida xabar yuboring. Keyin tizim siz uchun komponentni faollashtiradi. Komponentlarni faollashtirish To‘rt turdagi komponentlardan uchtasi - Activity, xizmatlar va eshittirish qabul qiluvchilari - niyat deb ataladigan asinxron xabar orqali faollashtiriladi. Niyatlar ish vaqtida individual komponentlarni bir-biriga bog‘laydi. Siz ularni boshqa komponentlardan, komponent sizning ilovangizga yoki boshqasiga tegishli bo‘lishidan qat’iy nazar, harakat talab qiladigan xabarchilar deb hisoblashingiz mumkin. Ma’lum bir komponentni (aniq niyat) yoki muayyan turdagi komponentni (nopiq maqsad) faollashtirish uchun xabarni belgilaydigan Intent ob’ekti yordamida niyat yaratiladi. Manifest fayli Android tizimi ilova komponentini ishga tushirishdan oldin tizim ilovaning AndroidManifest.xml faylini o‘qish orqali komponent mavjudligini bilishi kerak. Ilovangiz ushbu faylda uning barcha komponentlarini e’lon qilishi kerak, ular ilova loyiha katalogining ildizida bo‘lishi kerak. Manifest dastur komponentlarini e’lon qilishdan tashqari bir qator funktsiyalarni bajaradi, masalan: Ilova talab qiladigan har qanday foydalanuvchi ruxsatlarini belgilaydi, masalan, Internetga kirish yoki foydalanuvchining kontaktlarini o‘qishga kirish; Ilova qaysi API lardan foydalanishiga qarab ilova tomonidan talab qilinadigan minimal API darajasini e’lon qiladi; Kamera, Bluetooth xizmatlari yoki sensorli ekran kabi ilova tomonidan ishlatiladigan yoki talab qilinadigan apparat va dasturiy ta’minot xususiyatlarini e’lon qiladi; Ilova ulanishi kerak boʻlgan API kutubxonalarini (Android Framework API- laridan tashqari) e’lon qiladi, masalan, Google Xaritalar kutubxonasi. Ilova resurslari Android ilovasi shunchaki koddan iborat emas - u manba kodidan alohida resurslarni talab qiladi, masalan, tasvirlar, audio fayllar va ilovaning vizual tasviri bilan bog‘liq. Masalan, siz XML fayllari yordamida animatsiyalarni, menyularni, uslublarni, ranglarni va harakat foydalanuvchi interfeyslarining tartibini belgilashingiz mumkin. Ilova resurslaridan foydalanish kodni o‘zgartirmasdan ilovangizning turli xususiyatlarini yangilashni osonlashtiradi. Muqobil manbalar to‘plamini taqdim etish ilovangizni turli xil tillar va ekran o‘lchamlari kabi turli xil qurilma konfiguratsiyalari uchun optimallashtirish imkonini beradi. Android loyihangizga kiritgan har bir resurs uchun SDK yaratish vositalari noyob tamsayı identifikatorini belgilaydi, uni ilova kodingiz ichidan yoki XMLda belgilangan boshqa manbalardan manbaga murojaat qilish uchun ishlatishingiz mumkin. Misol uchun, agar ilovangiz logo.png nomli rasm faylini o‘z ichiga olsa (res/drawable/ katalogida saqlangan), SDK vositalari R.drawable.logo nomli resurs identifikatorini yaratadi. Ushbu identifikator rasmga havola qilish va uni foydalanuvchi interfeysiga kiritish uchun foydalanishingiz mumkin bo‘lgan ilovaga xos butun songa mos keladi. Manba kodidan ajratilgan resurslarni taqdim etishning eng muhim jihatlaridan biri bu turli xil qurilmalar konfiguratsiyasi uchun muqobil resurslarni taqdim etish qobiliyatidir. Masalan, XML-da foydalanuvchi interfeysi satrlarini belgilash orqali siz satrlarni boshqa tillarga tarjima qilishingiz va bu satrlarni alohida fayllarda saqlashingiz mumkin. Keyin Android resurs katalogi nomiga (masalan, res/values-fr/ fransuz satri qiymatlari uchun) qo‘shgan til kvalifikatsiyasi va foydalanuvchi til sozlamalari asosida foydalanuvchi interfeysingizga tegishli til satrlarini qo‘llaydi. Android sizning muqobil manbalaringiz uchun juda ko‘p turli xil kvalifikatsiyalarni qo‘llab-quvvatlaydi. Kvalifikator bu resurslardan foydalanish kerak bo‘lgan qurilma konfiguratsiyasini aniqlash uchun manba kataloglaringiz nomiga qo‘shadigan qisqa qatordir. Masalan, qurilmaning yo‘nalishi va ekran o‘lchamiga qarab, harakatlaringiz uchun turli tartiblarni yaratishingiz kerak. Qurilma ekrani portret (baland) yo‘nalishda bo‘lsa, tugmalar joylashuvi vertikal bo‘lishini xohlashingiz mumkin, lekin ekran landshaft (keng) yo‘nalishda bo‘lganda, tugmalar gorizontal ravishda hizalanishi mumkin. Yo‘nalish asosida tartibni o‘zgartirish uchun siz ikki xil tartibni belgilashingiz va har bir tartibning katalog nomiga mos kvalifikatsiyani qo‘llashingiz mumkin. Shundan so‘ng tizim qurilmaning joriy yo‘nalishidan kelib chiqqan holda avtomatik ravishda tegishli tartibni qo‘llaydi. Ilovangizga kiritishingiz mumkin bo‘lgan turli xil manbalar va turli xil qurilma konfiguratsiyalari uchun muqobil resurslarni qanday yaratish haqida ko‘proq ma’lumot olish uchun Resurslarni taqdim etish bo‘limiga qarang. Kuchli, ishlab chiqarish sifatli ilovalarni ishlab chiqish va ishlab chiqish bo‘yicha eng yaxshi amaliyotlar haqida ko‘proq bilish uchun Ilovalar arxitekturasi qo‘llanmasiga qarang. O‘z - o‘zini tekshirish uchun savollar: 1. Android nima va uning maqsadi nima? 2. Android ilovasining asosiy komponentlari va funksional sozlamalari qanday? 3. APK nima va u Androidda nima uchun ishlatiladi? 4. Kakaya rol fayli manifest va Android imtiyozlari? 5. Android-da niyat nima va u komponentlar o‘rtasida aloqa o‘rnatish uchun qanday ishlatiladi? 6. Android komponentlarining turlari qanday va har bir nix nima uchun? 7. Android ilovasi kontaktidagi resurslar nima va ular qanday boshqariladi? 8. Android komponentlarining hayot aylanishi qanday boshqariladi? 9. Gradle nima, u qanday rol o‘ynaydi va Android ilovasini ishlab chiqish nima? 10. Androidning qanday turli versiyalari mavjud va ularning xususiyatlari qanday? Download 3.38 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling