Muhammad al-xorazmiy nomidagi tоshkent axbоrоt texnоlоgiyalari universiteti


Andorid platformasida ilovalar ishlab chiqish tamoyillari


Download 277.87 Kb.
bet3/9
Sana27.10.2023
Hajmi277.87 Kb.
#1726009
1   2   3   4   5   6   7   8   9
2. Andorid platformasida ilovalar ishlab chiqish tamoyillari
Android ilovasi quyidagilardan iborat.
Android SDK (View, Activity, ContentProvider, Service, BroadcastReciever, niyat) va Android SDKda bir-birining vorisi bo'lmagan Java sinflari.

Java sinflari.
Quyidagi diagrammada Android SDKdan asosiy sinflarning ierarxiyasini ko'rsatib beradi.

1.4-rasm. Asosiy sinflarning ierarxiyasi
Darhaqiqat, ko'plab sinflar mavjud, ammo bular asosiy hisoblanadi. Sariq sarg'ish - ishlab chiquvchi to'g'ridan-to'g'ri ishlaydi (xususan ulardan meros olingan). Qolganlari juda muhim, ammo kamroq keng tarqalgan bo'lib qo'llaniladi.
View- barcha foydalanuvchi interfeysi vidjetlari uchun asosiy sinf hisoblanadi (GUI vidjetlari). Android dasturining interfeysi bu sinfning vorislari daraxt ko’rinishidadir. Ushbu daraxtni muntazam ravishda yaratishingiz mumkin, ammo bu noto'g'ri. Foydalanuvchi interfeysi XML (qatlamli fayllar, tartib-fayllar) yordamida aniqlanadi (Androidni ifodalash) [3].
Activity klassi va uning pastki sinflari foydalanuvchi interfeysi ortidagi mantiqni o'z ichiga oladi. Yaqindan tekshirish bo'yicha ushbu sinf ViewModelga Model-View-ViewModel modelida mos keladi (MVVM). Activityning ostki klassi va foydalanuvchi interfeysi o'rtasidagi munosabatlar tur xildir. Odatda, har bir activity ostki klassida u bilan bog'langan faqat bitta UI qatlami mavjud va aksincha. Activity sikl jarayoniga ega.
Sikl davrida Activity uchta holatdan birida bo'lishi mumkin:
Faol va ishlayotgan - bu foydalanuvchi interfeysi oldingi o'rinda (texnik jihatdan - faollashtirish stackining yuqori qismida).
To'xtatildi - bu foydalanuvchi interfeysi e'tiborda chetda qolgan holat. Bu holatda kod bajarilmaydi.
Tugallangan - agar foydalanuvchi interfeysi ko'rinmasa. Ushbu holatda, kod ijro etilmaydi.
ContentProvider sinf va uning voris sinflari MVVM arxitekturasida modelni ifodalaydi. Ko'pgina amaliy holatlarda, bu SQLite ma'lumotlar bazasida, URIga asoslangan kirish usuli bilan qoplangan. Nazariy jihatdan hech kim dasturchini ma'lumotlar bazasidan boshqa narsa asosida ContentProvider yaratish uchun ishlatmaydi. Biroq, kontent provayderning mavjud so'rovlar () usuli JDBC ResultSet interfeysiga va uning qanday ishlashiga juda o'xshash Cursor obyektini qaytaradi. Shuning uchun, kontent provayderlarining haqiqiy maqsadi ma'lumotlar bazasini qamrab olishi shubhali bo'lishi mumkin emas [3].
Kontent provayderlarining asosiy g'oyasi AJAX ilovalarining arxitekturasiga asoslangan bo’ladi. AJAX ilovalari odatda MVVM arxitekturasidan foydalanadi, bu yerda model server tomonidagi URI sifatida ifodalanadi (lekin bu HTML5 bilan o'zgartirildi). Haqiqatan ham, kontent provayderlarining URI yordamida so'ralishi va MIME turlarini qo'llagan holda kengaytma yaratish AJAX ning yadroda ekanligini ko'rsatadi.
Uyali qurilmada to'la huquqli munosabat bazasi bo'lishi juda ajoyib! (2005 yil, mobil telefonlar hozirgi kunga qaraganda ancha zaif bo’lishgan). Natijada ular ikkita yaxshi fikrni bir ContentProvider sinfiga birlashtirdi. Odatda dasturiy ta'minotni ishlab chiqish jarayonida bo'lgani kabi, ikkita yaxshi g'oyani birlashtirib turish har doim ham yaxshi natijaga olib kelmaydi. Androidda biz kontent provayderlarining bir nechta engillashtiradigan dizayniga egamiz.
Android Service me'moriy dizayni OSGI xizmatlaridan olingan.
Xizmatlar Google tomonidan ishlaydigan dasturchilar tomonidan yaratildi, chunki Androidning oqim modeli tufayli paydo bo'lgan mantiqiy muammo.
Activity faol va faqat uning foydalanuvchi interfeysi oldingi holatida ishlaydi. Boshqa activity interfeysi hozirgi holatni o'zi bilan yopib qo'yadi, oxirgisi, hatto biror narsa qilsa ham to'xtaydi. Agar operatsiyani amalga oshirish jarayonida birinchi o'rinda bo'lmasa ham, operatsiyani bajarish kerak bo'lsa nima bo'ladi? Activityning yordami bilan buni qila olmaysiz. Buni ContentProvider yordami bilan qila olmaysiz, chunki ular o'zlarining sikl aylanish davrlariga ega emaslar va ularni ishlatadigan activity faol bo'lgan holatda bajarilishi mumkin.
Bu yerda servis yordamga keladi. Ularni amalga oshirish jarayoni oldingi o'rinlarda bo'lmasa ham amalga oshirilishi mumkin. Shunday qilib, agar siz fonda ishlashni davom ettiradigan vaqtni qisqartiruvchi operatsiyani amalga oshirayotgan bo'lsangiz va activityni boshlaydigan xizmatni yaratishingiz kerak.
Servis shuningdek, sikl aylanish jarayoniga ham ega. Buning ma'nosi, uni ba'zi holatlar uchun Android ilovasi tomonidan uyg'unlashtirishi va ishga tushirishi mumkin.
Yuqorida aytilganidek, Service ContentProvier'dan ko'ra ko'proq umumiy maqsadlarga ega. Ma'lumotlar bazasidan foydalanishi mumkin, ammo uning APIsi ContentProvider holidagi kabi, ma'lumotlar bazasi bilan bog'liq emas. Ko'p hollarda xizmatlar tashqi serverlar bilan bog'lanish uchun ishlatiladi.
BroadcastReceiver sinfi va uning quyi sinflari Android arxitekturasida qo'llaniladigan ta'sir mexanizmida ifodalanadi.
Albatta, Androidning ishlab chiqaruvchisi Android SDKdan kengayishi bilan chegaralanmaydi. U istaganicha o'z sinflarini yozishi mumkin. Ammo ular Android SDK sinflari uchun faqat yordamchi sinflar bo'lishadi.
Android manifesti.
Android Manifesti - Android dasturining yana bir muhim qismi. Idea Eclipse uchun plugin paydo bo'lishidan kelib chiqqan.
Android manifesti XML fayli bo'lib, bir nechta vazifalarni bajaradi. Google shunday ta'riflaydi:

  • java dastur paketining nomini bildiradi. Paket nomi dastur uchun yagona identifikator;

  • ilovaning tarkibiy qismlari – xizmatlar va kontent provayderlarini tavsiflab beradi. Komponentlarning har birini amalga oshiradigan va ularning qobiliyatlarini e'lon qiluvchi sinf nomlarini belgilaydi (masalan, ular qaysi xabarni ko'rib chiqishlari mumkin). Bular Android tizimiga qaysi komponentlarni va qaysi sharoitda ishga tushirilishini bilish imkonini beradi;

  • dastur komponentlari o'z ichiga oladigan jarayonlarni oldindan belgilaydi;

  • ilovaning API xavfsiz qismlariga kirish va boshqa ilovalar bilan ishlashga ruxsat berishi kerak bo'lgan ruxsatnomalarni e'lon qiladi. Bundan tashqari, dastur komponentlariga kirish uchun zarur bo'lgan ruxsatlarni e'lon qiladi;

  • ilova ishlayotganda profiling va boshqa ma'lumotni ta'minlaydigan asboblar sinflari;

  • bular faqat manifestda mavjud bo'lib, dastur ishlab chiqilgan va sinovdan o'tgan;

  • ilova talab qiladigan Android API minimal darajasini e'lon qiladi;

  • ilovani bog'lash uchun kutubxonalarni ro'yxatlash zarur.

Ikkinchi xatboshiga e'tibor bering. Bu degani, muayyan sinf o'zingizning ilovangizdagi activity, ContentProvider, BroadcastReceiver yoki xizmatni kengaytirsa, bu sinf manifestda tasvirlanmaguncha ishlatilmaydi.
Resurslar.
Har bir zamonaviy GUI dasturi resurslardan birini yoki boshqa shaklda ishlatadi. Android ilovalari istisno emas. Ular quyidagi resurslardan foydalanadilar:

  • rasmlar;

  • GUI qatlamlari (XML fayllari);

  • menyu deklaratsiyasi (XML fayllari);

  • matn qatorlari.

Resurslar Android ilovasi bilan bog'liqligi odatiy holdir. Odatda, Java resurslarida strings bilan aniqlanadi. Bunday satrlarda, masalan, tasvirni o'z ichiga oladigan faylning nomi yoki berilgan satrning identifikatori va boshqalar bo'lishi mumkin. Muammo shundaki, bunday ulanishlardagi xatolar kodning kompilyatsiya vaqtida aniqlanmaydi [4].
Keling, quyidagi misolni ko'rib chiqaylik. Mybutton.png nomli fayl tugma uchun tasvirni o'z ichiga oladi. Ishlab chiquvchi xato qilmoqda va koddan manbaga ishora qilib, mybuton.png ni teradi. Natijada, kod mavjud bo'lmagan resursdan foydalanishga harakat qiladi, ammo kompilyatsiya muvaffaqiyatli amalga oshiriladi. Xato faqat sinov paytida aniqlanishi mumkin (yoki u aniqlanmasligi mumkin).
Google dasturchilari bu muammoni hal qilishda oqilona yechim topdilar. Android ilovasini yaratishda R (R) nomi bilan maxsus Java sinf ishlab chiqarishdi. Bu sinf bir nechta statik yakuniy ma'lumotlar to'plamlarini o'z ichiga oladi. Har bir bunday ma'lumotlar to'plami alohida resurs uchun havola hisoblanadi. Ushbu havolalar resurslar bilan bog'lanish uchun dastur kodida ishlatiladi. Endi resurslarga aloqada bo'lgan har bir xato kompilyatsiya jarayonida namoyon bo'ladi.
Fayllar. Android ilovasi turli xil fayl turlarini qo'llab-quvvatlaydi:

  • umumiy maqsadli fayllar;

  • JB fayllari;

  • Opak Binary Blob (OBB) fayllari (ular ilovaga o'rnatilgan bo'lishi mumkin bo'lgan shifrlangan fayl tizimi);

  • keshlangan fayllar.

Garchi, ularning barchasi Linux fayllari bo'lsada, ularni turli xil API va alohida saqlash bilan ishlashda ularni alohida fayl turlari deb hisoblash mumkin. Ular, shuningdek, ichki yoki tashqi xotirada saqlangan fayllardan ajralib turadi.
Fayllar bilan ishlaydigan API va xizmat sinflari yaratilgan Kontekst sinfi tomonidan amalga oshiriladi.



Download 277.87 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




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