Android ОЖ қосымшаны құрастыру технологиясын қарастыру
Мазмұны
Кіріспе
1 Android ОЖ қосымшаны құрастыру технологиясын қарастыру
Android операциялық жүйесіне арналған қосымшаларды құрастыру
2 Қосымшаның ақпараттық жүйесін жобалау және бағдарламалау тілдерін таңдауды негіздеу
2.1 Android-қа арналған қосымшаны ұйымдастыру және жобалау
2.2 Біріздендірілген модельдеу тілі UML
3 Қосымшаның ақпараттық жүйесін құpу тexнoлoгияcы мeн әдicтeмeci
CRM жүйесімен жұмыс істеуді қарастыру
Қорытынды
Пайдаланылған әдебиеттер тізімі
Кіріспе
Бүгінгі күні смартфондардың адам өміріне көмегі біз ойлағаннан әлде қайда көп тиіп жатыр. Оның көмегімен көптеген ақпараттарға қол жеткізуге, қашықтықтан объектілерді бақылауға, тіпті жол белгілерін тануға болады. Мәселен, көлігімізбен жол жүріп бара жатып, жол белгілерін байқамай қалуы - мыз мүмкін, соның салдарынан жол жүру ережелері бұзылып жатады. Жол белгілерін тану мүмкіндігі заманауи құрылғылардың көмегімен оңай, әрі арзан жүзеге асырылады, бірақ мұндай мүмкіндіктерді мобильді құрылғыларда қолдану республикамызда өте сирек кездеседі.
Android, Linux операциялық жүйесі негізінде жасалған. Программаның және ядроның арасында API қабаты және нативті кодтағы кітапхана орналас- қан. Программа виртуалды машина Java-да (Dalvik Virtual Machine) орын - далады.
Android-та көптеген қосымшаларды бір уақытта ашу мүмкіндігі бар. Бірақ, бір қосымша толығымен бүкіл экранды алады. Ағымдағы қосымшаны қолдана отырып басқа программаны қосуға немесе жаңасын ашуға болады. Тарихын көруге болатын браузерге ұқсайды.
Android арнаулы механизмді қолданып, әрекеттерді Intent негізде жүргі - зеді. Яғни, белгілі әрекетттер істелген кезде (қоңырау соғу, хабарлама жіберу, терезені көрсету), Intent шақырылады.
Тағы да, Android демоға ұқсас Linux серверлерін ұстайды, олардың атқару қызметі керекті әрекетті фондық режимде орындалады (мысалы, өленнің ойналуы). Программада деректерді айырбастау үшін Content providers провайдері қолданылады. Айтылмыш жұмыс үшін деректер провайдерін пайдаланып, қолданушының құрылғысына орнату керек.
Android - коммуникаторларға, планшеттарға, цифрлық ойнатқыштарға, цифр - - лық фоторамкаларға, қолға киетін сағаттарға, нетбук және смартбуктарға арналған операциялық жүйе. Программаларды өңдеудегі негізгі тілдердің бірі Java. Программаны жасау үшін Eclipse ортасын қолданамыз, AndroidSDK мобильдік құрылысы SDK эмуляторы арқылы іске асады. Java объектісіне негізделген тіл. Бірінші орында ол қолданушыға жеңіл әрекеттестікті көрсетеді.
1
1 Android операциялық жүйесіне арналған қосымшаларды құрастыру
Android-қа арналған қосымшаны құрастырудан бұрын, осы мақсатқа қажет болатын құралдарды қарастырсақ, Android-қа арналған мобильді қосым - ша - ларды жасау құралдардын белгілеп алуға болады. Құрастыру процессін жеңіл - де - тетін қосымша көптеген жүйелер бар.
Міндетті түрде қолдану керек құралдарға Android SDK - мобильді қосым- шаны жасауға, компиляциялауға және құрастыруға қажетті құралдарын жатқы - за аламыз. Мысалы, бағдарламалау құралдарының жиынтығы. Android SDK құрамына кіретін ең маңызды құралдарды қарастырайық.
SDK Manager - Android SDK компоненттерін жүктеуге мүмкіндік беретін құрал. Android SDK дестелерін және олардың мәртебелерін көрсетеді: орнатыл- ған (Installed), орнатылмаған (Not Installed), қол жетімді жаңартулар (Update available). Android SDK Manager 1.1 суретте көрсетілген.
1.1-сурет. Android SDK Manager
Debug Monitor - графикалық интерфейсті Android қосымшаларды талдауға және дұрыстауға арналған бірнеше құралдарға көрсететін дербес құрал. Ол құралдар DDMS (Dalvik Debug Monitor Server) порттарды жібереді, құрылғы экранын қармау қызметтерін орындайды, Android әрекеттері жөніндегі ақпараттарды шынайы уақыт режимінде (logcat) жіберуді ұсынады.
Hierarchy Viewer Android қосымшаның пайдаланушылық интерфейсін реттеуге және оңтайландыруға мүмкіндік береді [1].
Tracer for OpenGL ES - мобильді қосымшада пайдаланылатын OpenGLES кодты талдауға арналған құрал. OpenGLES командаларын қармап және оларды жеке кадрлар бойынша көрсетуге мүмкіндік береді. Бұл графикалық команда - лар - - - дың қалай орындалатындығын түсінуге көмектеседі.
Android Emulator (emu - la - tor) - құрастырушы компьютерінде жасалатын және жұмыс істейтін виртуалды мобильді құрылғы. Ол шынайы құрылғыларды емес, мобильді қосымшаларды құрас - тыруда және сараптауда пайдаланылады.
AVD Manager - Android Emulator-да қарастырылатын, виртуалды Android құрылғыларын құрастыруға және оларды басқаруға арналған графикалық ин - тер - - - фейс. Monitor құралының терезесі 1.2 суретте көрсетілген.
1.2-сурет. Monitor құралының терезесі
Android Debug Bridge (adb) - эмулятор немесе компьютерге жалғанған шынайы Android құрылғының күйін бақылауға мүмкіндік беретін икемді құрал. Сонымен бірге, Android қосымшаны (.apk файлы) шынайы құрылғыға орнату үшін пайдаланылуы мүмкін.
Біз Android SDK құрамына кіретін негізгі құралдарды қарастырдық. Android-қа арналған мобильді қосымшаларды құрастыру үшін, SDK құралдарын жақсы білудің өзі жеткілікті. Жобаларды дайындауға қажетті қосымша нұсқаулықтар, компиляциялар, командалық жолдан іске қосулар Google-дың нұс - - - қау - - лығында берілген [2].
Қазіргі заманғы жағдайларда БЖ құрастыру көп жағдайда кіріктірілген құрастыру орталарын (IDE) пайдалану арқылы жүргізіледі. IDE-нің бірнеше басымдылықтары бар: қосымша компиляциясы, жинақтау және іске қосу процесстері әдетте автоматтандырылған, осыған байланысты, бастаушы құрастырушылар үшін алғашқы қосымшаны жасау қиынға соқпайды. Бірақ құрастырумен шындап айналысу үшін, ортаның мүмкіндіктерін зерттеуде үлкен күш пен уақыт жұмсау керек. Android құрастыруға арналған IDE - -ді қарастырайық. Алдымен Google ұсынған екі құрастыру ортасы жөнінде айтып кетейік: Android IDE (ADT) және Android Studio.
1 Android IDE - Eclipse-ке негізделген Android-қа арналған құрастыру орта- сы. Мобильді қосымшаларды құрастыруға, жинақтауға және ретке келтіру - ге арналған кіріктірілген құралдарға ие. Android IDE негізгі құрастыру орталарының бірі. Бұл ортаның мүмкіншіліктері өте көп. Алдымен, эмуляторда және шынайы құрылғыда қосымшаны жасап, іске қосу үшін ортаны орнатып, баптап алу қажет. Android Studio құрастыру ортасы 1.3 суретте көрсетілген.
2 Android Studio - IntelliJ IDEA-ге негізделген, Android-қа арналған құрасты- ру ортасы. Android IDE секілді, құрастыру және ретке келтіруге арналған кіріктірілген құралдарға ие. IntelliJ-дің мүмкіншіліктеріне қосымша түрде, Android Studio-да келесідей мүмкіндіктер бар:
* Gradlie-ке негізделген қосымшаны жинақтауды қолдау;
* Android үшін ерекше болып саналатын рефакторинг және ақауларды жыл- дам жөндеу;
* өнімділікпен, басқа нұсқалармен сәйкестендіру және басқа да мәселелерді іздеуге арналған lint құралдары;
* ProGuard мүмкіндіктері (кодты қысқартуға, оңтайландыруға арналған утилита) және қосымшалардың қолдары (подсписи);
* үлгілерге негізделген, жалпы Android құрылымдары мен компоненттерін жасауға арналған мастерлер;
* экранның көптеген өлшемдерінде және ажыратымдылықтарында жұмыс істей алатын WYSIWYG редактор, іске қосылған қосымшаны бірден бірне- ше құрылғыларда және шынайы уақыт режимінде көрсететін, алдын-ала қарау терезесі;
* Google-дың бұлттық платформасының орнатылған қолдауы (поддержка);
* Android Studio-ның соңғы нұсқасын жүктеу, сонымен бірге орнату, баптау және жұмысты бастау туралы нұсқаулығын алуға болады;
1.3-сурет. Android Studio құрастыру ортасы
Android-қа арналған қосымшаларды құрастыруға мүмкіндік беретін басқа да құралдарды қарастырайық. Intel - Intel XDK және Intel Beacon Mountain құралдарын алатын болсақ :
* Inter XDK оңай түрде кроссплатформалық мобильді қосымшаларды құрас- тыруға мүмкіндік береді;
* құрамында БЖ жасауға, реттеуге және жинақтауға арналған құрылғылар, сонымен бірге қондырғының эмуляторы болады;
* Android, Apple iOS, Microsoft Windows8, Tizen арналған құрастыруларды қолдай алады;
* HTML5 және JavaScript құрастыру тілдерін қолдайды [3].
Мобильді қосымшаларды құрастыруға арналған HTML5 жаңа буынды құ - рал - да - ры мен Intel XDK құралдары көп қолданылады. Осы құралдардың көмегі - мен мобильді қосымшаны құрастыру жобалануда.
Intel Baecon Mountain - Android ОЖ-нің басқару жұмысын жасайтын құралдарына арналған қосымшаларын жобалауға мүмкіндік беретін құрастыру ортасы. Android-қа арналған қосымшаларды жобалауға, құрастыруға, реттеуге және оңтайландыруға мүмкіндік беретін құралдарға ие. Құрастырушының құрастыру жүйесін өзекті күйде қолдап отыру қажеттілігінен босатады. Intel Atom және ARM процессорлары негізіндегі мақсаттық платформаларды құрастыруға мүмкіндік береді. Beacon Mountain Android IDE (Eclipse, Android ADT, Android SDK ) негізінде құрастырылған, күрделі құрастырулар мен оңтайландырулар үшін келесідей Intel құралдары қосылған:
* Intel Hardware Accelerated Execution Manager (Intel HAXM) - құрастыру ортасында эмулятор жұмысын күшейту үшін Intel (Intel VT) виртуалдандыру технологиясын пайдаланатын, аппараттық түрде қолдау табатын виртуалдандыру процесссоры.
* Intel Graphics Performance Analyzers (Intel GPA) System Analyzer - Android ОЖ-нің басқаратын Intel Atom процессоры бар мобильді қондырғыларын қолдайды. Құрастырушыларға OpenGL процедураларын қолдану кезінде жүйенің жүктелуін оңтайландыруға мүмкіндік береді. Шынайы уақыт режимінде CPU, GPU және OpenGL ES API жүктеулігін көрсететін көптеген жүйелік метриктерді алуға мүмкіндік береді. Құрастырушы графиканы өңдеу кезінде тар жерлерді анықтау үшін бірнеше графикалық тәжірибелерді іске қоса алады.
* Intel Integrated Performance Primitives (Intel IPP) Preview - Android ОЖ басқаратын Intel платформасына ие мобильді қондырғыларды қолдайтын, деректер мен суреттерді оңтайлы түрде өңдейтін кітапхана. Preview нұсқасы Android ОЖ қолдайтын Intel IPP-дің толық нұсқасының бір бөлігі.
* Intel Threading Building Blocks (Intel TBB) - масштабталатын қосым - ша - лар - ды құрастыруға және өнімділікті арттыруға арналған, кеңінен қолданы - латын, сенімді C++ үлгілерінің кітапханасы. Android басқаратын Intel плат - форма - - сына ие мобильді құрылғыларды қолдайды. Сенімді алгоритмдер құрас - тыру - шыларға С ++ мобильді қосымшаларын тиімді түрде параллель - деуге мүм - кіндік береді. Бұл энергетикалық шығындардың азаюы кезінде өнімділікті арттырады. Intel Beacon Mountain қолдау беті 1.4 суретте көрсетілген.
1.4-сурет. Intel Beacon Mountain қолдау беті
Marmalade SDK аспаптарын (инструментарий) назардан шығармау керек.
Marmalade SDK - Ideaworks3D Limited ұсынатын кроссплатформалық SDK. Мобильді қондырғыларды құрастыруға, сараптауға және өрістетуге арналған кітапханалар, үлгілер, құралдар және құжаттамалардың жиынтығы болып келеді. Негізінен ойындарды құрастыру үшін қолданылады. Cut the Rope және Plants vs. Zombies секілді көптеген ойындар осы бағдарламалық құралдарды пайдаланылып құрастырылған. Өкінішке орай, Marmalade SDK прориетарлық бағдарламалық жасақтама болып келеді (ең арзан лицензиясы ай сайын $15) [4].
Отандық құрастырушылар туралы айтпай кетуге болмайды. Мысалы, 1С компаниясы заманмен қатар жүреді, 1С 8.3 платформасының нұсқасы мобильді қосымшаларды құрастыруға мүмкіндік береді. 1С: Предприятие 8. Расшире- ние карманных компьютеров бағдарламалық өнімі 1С: Предприятия 8 ақпа - рат - тық қорларының деректерімен мобильді құрылғыларда (қалталы компьютерлер, коммуникаторлар, деректерді жинау терминалдарында), сонымен бірге 1С: Предприятия 8 ақпараттық қорларына тікелей қол жеткізу мүмкіндігіне ие емес жеке компьютерлерде (соның ішінде ноутбуктарда) жұмыс істеуге мүмкіндік береді.
Әрине бұл бағдарламалық өнімнің қолдану аясы өте кішкентай, бірақ кейбір жағдайларда бұл өте ұтымды шешім болуы мүмкін.
1С мобильді қосымшалардың редакторы 1.5 суретте көрсетілген.
Эмуляция. Android стандартты эмуляторы. Эмуляция (ағыл.emulation) есептеуіш техникада - бағдарламалық, аппараттық кешендер немесе олардың үйлесулері. Олар бір есептеуіш жүйенің (қонақ) функцияларын басқа есептеу жүйесіне (хост), эмуляциялық тәртіп тұпнұсқаның (қонақтың) тәртібіне мүмкін- дігінше сәйкес болатындай етіп көшіруге (эмуляциялауға) арналған.Оның мақсаты, асбтрактілі модельдің тәртібі тек иммитацияланатын компьютерлік модельдеудің әртүрлі формаларына қарағанда, тәртіпті максималды түрде дәл қылып жаңғырту болып келеді.
1.5-сурет. 1С мобильді қосымшалардың редакторы
Эмулятор - компьютерде іске қосылатын, виртуалды мобильді құрылғы. Эмулятордың көмегімен шынайы құрылғыларды пайдаланбай-ақ, қосым - ша - ларды құрастыруға және сараптауға болады. 1.6-суретте іске қосылған стан - дарт - ты эмулятордың үлгісі көрсетілген.
1.6-сурет. Android SDK эмуляторы Hello, world қосымшанысының іске қосылу процесі
Эмуляторларды қолданудың басымдылықтарына қолданудың оңайлығын және тегін болуын жатқызуға болады. Құрастырушыға әртүрлі смартфондарда жұмыс істеу қабілеттілігін тексеру үшін, әртүрлі сипаттамалары көптеген құрыл - - - ғыларды сатып алудың қажеттілігі жоқ. Тек талап етілетін сипаттамалары бар эмуляторларды жасап және оларда қосымшаларды іске қосу ғана жеткілікті. Өкінішке орай, эмуляторлардың кемшілігі де жоқ емес, ол көп жүйелік ресурс - тарды талап етеді.
Компьютер мен смартфон процессорларының архитектурасындағы айырмашылықтардың әсерінен баяу іске қосылады. Қазіргі заманғы дербес компьютерлер х86 және х64 архитектураларында құрылған, ал Android ОЖ қолданатын көп - те - ген смартфондар - ARM-да жасалған. Бір архитектурадан екінші архитектураға эмуляциялау процессі өте күрделі болады және өте баяу жүреді.
Кейбір жағдайларда стандартты эмулятор жеткіліксіз болады. Бұл жерде мәселе, қарапайым компьютерлерде жоқ смартфондық мүмкіндіктер жөнінде (мысалы, gps датчигі немесе акселометр) айтылады. Мұндай жағдайларда толығымен реттеуді тек шынайы құрылғыны қолдану арқылы ғана жүргізуге болады .
Android SDK-мен бірге келетін стандартты эмулятор көп адамдардың көңілінен шықпайды. Баламалы эмуляторлардың құрастыруларын және дамуын қолдай алатын жобалар бар. Мысал ретінде Genymotion (1.7-сурет) Android-тың жылдам эмуляторын (құрастырушылардың пікірінше) келтіруге болады. Оның ішінде алдын ала бапталған Android (OpenGL күшейткіші бар х86) үлгілері (образ) бар. Genymotion Linux, Windows және Mac OS X үшін қол жетімді, және өзінің жұмысы үшін VirtualBox-ты талап етеді. Басқаша айтқанда, Genymotion деп өзінде орнатылған Android ОЖ бар виртуалды машинаны айтамыз. Жүйелік ресурстардың көп шығыны мәселесін шешпейді, бірақ іске қосу жылдамдығы едәуір артады. Қазіргі уақытта белсенді түрде дамуда.
1.7-сурет. Genymotion баламалы эмуляторы
Мобильді қосымшаларды құрастыруға кірісе бастағанда, негізінен қандай қосымшалардың түрлері бар екендігі туралы білу керек. Өйткені, қосымша қандай типке жататындығы анықталатын болса, оны құрастыру процессі ке - зінде қай жерлерге негізгі көңілді аудару керек екендігі түсінікті бола бастайды. Қосымшалардың келесідей түрлерін белгілеуге болады:
Алдыңғы пландағы қосымшалар экранда көрінетін кезде ғана өз функция - ларын атқарады, кері жағдайда ол тоқтап тұрады. Мұндай қосымшаларға ойындарды, мәтіндік редакторлар, видожаңғыртқыштарды жатқызуға болады. Қосымшаларды құрастыру кезінде белсенділіктің өмір сүру циклін егжей-тегжейлі зерттеу қажет. Фондық режимге ауысу және қайта кіру процесстері өте жұмсақ түрде орындалуы тиіс, яғни қосымшаның бірінші планға қайта оралуы кезінде, ол мүлдем жоғалмағандай түрде болуы тиіс. Бұл жұмсақтыққа қол жеткізу үшін фондық режимге кіру кезінде қосымша өзінің күйін сақтағанын, ал бірінші планға шығуы кезінде оның қалпына келуін қадағалау керек. Назар аудару керек тағы бір мәселе, бірінші пландық қосымшаны құрастыру кезінде оның интерфейсінің ыңғайлы және түсінікті болуы .
Фондық қосымшалар баптаудан кейін пайдаланушымен ешқандай әрекеттесуге түспейді, көп уақыт бойы олар жасырын күйде жұмыс істейді. Мұндай қосымшаларға мысал ретінде қоңырауларды экрандау, автоматты SMS жауап қайтарғышын көрсетуге болады. Көп жағдайда фондық қосымшалар аппараттық жабдықтаманы, жүйе немесе басқа қосымшалар тудырған оқиға - ларды қадағалауға бағытталған. Тіптен көрінбейтін сервистерді жасауға болады, бірақ олар басқаруға келмейтін болып қалады. Рұқсат етілетін әрекеттер: сервистің санкцияланған іске қосылуы, баптау, қажет болған жағдайда оның жұмысын тоқтату немесе кідірту [7].
Аралас қосымшалар көп уақыт бойы фондық режимде жұмыс істейді, бірақ пайдаланушымен әрекеттесуге баптаудан кейін де рұқсат ете алады. Әдетте, пайдаланушылармен әрекеттесу қандай да бір оқиғаны хабарландыру - мен шектелуі мүмкін. Мұндай қосымшаларға мысал ретінде мультимедиа-жаңғыртқыштар, мәтіндік хабарламалардың алмасуына арналған бағдар - ла - малар, пошталық клиенттер қарастырыла алады. Бұл қосымшаларда көрінетін белсенділіктермен қатар, көрінбейтін (фондық) сервистер де болады және пайдаланушымен әсерлесу кезінде ағымдағы күйі ескерілуі тиіс. Егер қосымша алдыңғы планда болса, графикалық интерфейсті жаңарту керек болады немесе фондық режимнен пайдаланушыға болып жатқан жағдайлар жайында хабарламаларды жіберіп тұруы тиіс. Мұндай ерекшеліктерді осындай қо - сым - шаларды құрастыру барысында ескеріп отыру маңызды.
Виджеттер - жұмыс үстелінде графикалық нысан түріндегі кішкентай қосымшалар. Оған мысал ретінде динамикалық ақпаратты көрсетуге арналған қосымшаларды, яғни батарея зарядын, ауа-райын, дата және уақытты жатқызамыз. Қосымшаны құрастыруды жоспарлауда алдымен оның пайдалану тәсілдерін анықтау керек, одан кейін ғана жобалауға және құрастырудың өзіне кірісу қажет.
Android ОЖ-гі қосымшалардың жұмыс істеулерінің ұйымдастыруларына назар аударайық. Айтылып өткендей, Android-қа арналған қосымшалар Java бағдарламалық тілінде құрастырылады, .apk кеңейткіші бар файлда компиляцияланады, одан кейін осы файл Android басқармасындағы құрылғыға орнату үшін қолданылады. Орнатылғаннан кейін әрбір Android қосымшасы өзі - нің қауіпсіз құмсалғышында өмір сүреді, оның қалай көрінетіндігін сипаттасақ:
* Android операциялық жүйесі көп пайдаланушылық ОЖ болып келеді, онда әрбір қосымша жеке пайдаланушы ретінде қарастырылады;
* үнсіз келісім бойынша, жүйе әрбір қосымшаға бірегей пайдаланушылық ID тағайындайды;
* жүйе қосымшаларының барлық файлдарына қол жеткізу құқығы келесідей: қосымша элементіне сәйкес ID бар пайдаланушы ғана қол жеткізе алады;
* әрбір қосымшаға жеке Linux процессі сәйкес болады, ол қосымшаның бір компонентіне қажет болған кезде іске қосылады, қосымшаның ешқандай компонентін пайдаланбай жатқан кезде немесе басқа қосымшалар үшін жадыны босату керек болған жағдайда тоқтатылады;
* әрбір процесске Dalvik виртуалды машинасының жеке экземпляры сәйкес болады, осыған байланысты қосымшаның коды басқа қосымшалардан оқшау түрде орнатылады.
Android ОЖ-нің көрсетілген функционалдау идеялары минималдық артықшылықтар принциптерін жүзеге асырады, яғни әрбір қосымшаға, үнсіз келісім бойыша өзінің жұмысына қажетті ғана компоненттерге қол жеткізу құқығы берілген. Осылайша, қосымшаның өте қауіпсіз жұмыс істеу ортасы қамтамасыз етіледі.
Алайда, қажет болған жағдайда, қосымшалар басқа қосымшалардың деректеріне немесе жүйелік сервистерге қол жеткізуі мүмкін. Екі қосымшаға бір-бірінің деректеріне қол жеткізу керек болған жағдайда, оларға бір пайда - ланушылық ID тағайындалады. Үнемді жүйелік ресурстар үшін қосым - шалар бір Linux процессте іске қосылады және бір-бірімен ортақ виртуалды машинаның экземплярын бөледі, бұл жағдайда қосымша бір сертификатпен жазылуы тиіс. Егер де қосымшаға жүйелік деректерге қол жеткізу қажет болса, мысалы, контактілер, SMS хабарландырулар, жад карталары, камераға, Bluetooth және т.б., пайдаланушы қосымшаны орнату кезінде өкілеттілік беруі тиіс.
*
2
2.1 Android-қа арналған қосымшаны ұйымдастыру және жобалау
Android-қа арналған қосымшаның ішкі құрылымына келсек: оның архитек - тура - сы мен негізгі компоненттеріне көңіл бөлген жөн.
Android қосымшасының архитектурасы, құрылым блоктары болып сана - латын компоненттерді көп реттік қолдану идеясына негізделген. Әрбір компо - нент жеке мән болады және қосымшаның жалпы тәртібін анықтауға мүмкіндік береді.
Android жүйесінде, кез-келген қосымша басқа бір қосымшаның қажетті компо - ненттерін іске қоса алады. Мысалы, егер қосымша суретке түсіру үшін камераны пайдалануды қажет етсе, осы қосымшада камерамен жұмыс істеу белсенділігін құрудың қажеттілігі жоқ. Көп жағдайда қосымшаның өзінде камерадан суреттер алу мүмкіндігі бар, тек қана сәйкес белседілікті іске қосып, суретті алу және оны қосымшаға қайтару ғана қажет. Пайдаланушы камераның өзін қосымшаның бір бөлігі деп қарастырыуы мүмкін. Егер компонент іске қосылмай, компонентке қажетті класстарды жасап жатса, жүйе компонентті іске қосқан кезде, ол қосымшаның сол компонент жататын проце - сін іске қосады. Сол себепті басқа көптеген жүйелерге қарағанда, Android Жүйесінде қосымшалар бірыңғай шығу нүктесіне ие емес (мысалы, main () тәсілі жоқ). Жеке процессте әрбір қосымшаның іске қосылуына және файлдарға қол жеткізудің шектеулігіне байланысты, қосымша басқа қосымшаның компонентін тікелей қоса алмайды. Осылайша, басқа қосымшаның компонентін активациялау үшін, жүйеге белгілі бір компонентті іске қосу ниеті жайында хабарлама жіберу қажет, сол кезде жүйе оны активациялайды [9].
Компоненттердің төрт түрлі типтерін белгілеуге болады, әрбір тип жеке мақсат - тарға қол жеткізу үшін қызмет етеді және ерекше өмір сүру цикліне ие болады. Ол сәйкес компоненттің жасалу және бұзылу әдістерін анықтайды. Adnroid қосымшалардың негізгі компоненттерін қарастырайық:
* Белсенділіктер (Activities). Белсенділік - қосымшаның көрінетін бөлігі (экран, терезе, форма), пайдаланушының графикалық интерфейсін көрсету үшін жауап береді. Бұл ретте қосымша бірнеше белсенділіктерге ие болуы мүмкін, мысалы электрондық поштамен жұмыс істеуге арналған қосымшада, бір белсенділік жаңа хабарламалар тізімін көрсету үшін, басқасы жазу үшін, тағы бірі - хабарламаларды оқу үшін арналуы мүмкін. Қосымша пайда - ла - нушыға біртұтас болып көрінгенімен, қосымшаның барлық белсенділіктері бір-біріне тәуелсіз болады. Мысалы, камера қосымшасы дәл сол мезетте жасалған суретті белгіленген пайдалануға жіберу үшін, жаңа хабарламалар жазатын белсенділікті іске қоса алады.
* Сервистер (Services). Сервис - фондық режимде жұмыс істейтін компо - нент, уақыт бойынша ұзақ операцияларды немесе қашықтағы процесстерге ар - нал - ған жұмыстарды орындайды. Сервис пайдаланушылық интерфейсті ұсын - байды. Мысалы, сервис, пайдаланушы басқа қосымшаны қолданып жатқан кезде, музыканы жаңғырта алады, пайдаланушының белсенді - лікпен әрекет - тесуін бұғаттамай, желіден деректерді жүктей алады. сервисті компонент іске қосып, одан кейін ол өзі дербес түрде немесе осы компонентпен байланысқан түрде немесе өзара әрекеттесіп жұмыс істей алады.
* Контенттік провайдерлер (Content providers). Контент провайдер үлес - тірілген көптеген қосымшалардың деректерін басқарады. Деректер файлдық жүйеде, SQLite деректер қорында, желіде, қосымша қол жеткізе алатын кез-келген жерде сақталуы мүмкін. Контент провайдерлер басқа қосымшаларға, сәйкес құқықтары болған жағдайда, сұраныстар жіберуге немесе тіпті деректерді өзгертуге мүмкіндік береді. Мысалы, Android жүйесінде пайдаланушының контактілері жөніндегі ақпаратты басқаратын контент провайдері бар. Осыған байланысты, сәйкес құқықтары бар қосымшалар қандай да бір контакт жөніндегі ақпараттарды оқуға немесе жазуға сұраныс бере алады. Контент провайдер, шет жақта қол жеткізуге арналмаған, қосымшаның құпия деректерін оқып және жазғанда пайда болуы мүмкін [10].
* Кең таратымды хабарламалар қабылдағыштары (Broadcast Receivers). Қабылдағыш - кең таратымды хабарлауларға әсер ететін компонент. Мұндай хабарлаулардың көп бөлігін жүйе тудырады, мысалы, экран өшіп қалғанын немесе батарея зарядының төмендігі жөніндегі хабарламалар. Қосымша, соны - мен бірге, кең таратымды хабарламаларды тудыра алады, мысалы, басқа қосымшаларға кейбір деректердің жүктелгенін және қолдануға болатындығы жөніндегі хабарламалар. Қабылдағыштар пайдаланушылық интерфейсті көрсетпегенімен, олар күй панеліне, хабарлама келгені жөніндегі ескертулер жасай алады. Мұндай қабылдағыш басқа компоненттерге өткізгіш болып келеді және кішкене көлемдегі жұмыстарды орындауға арналған, мысалы, ол оқиғаға сәйкес сервисті іске қосады.
Барлық қарастырылған компоненттер Android SDK-да анықталған класс - тардың ізбасарлары болып келеді. 2.1-суретте құрастырушы әрекеттесетін негізгі Android SDK класстарының иерархиясы көрсетілген. Негізінде, класстар әлдеқайда көп, сары түспен құрас - тырушы тікелей әрекеттесетін класстар көрсетілген.
View классы пайдаланушылық интерфейстің (UI) компоненттерінің негізгі құрылымдық блогы болып келеді, ол экранның тік бұрышты аумағын анық - тайды және оқиғалардың бейнеленуін және өңделуіне жауап береді. Пайдалану - шылық интерфейстің интерактивті компоненттерін жасауға арналған виджеттер (GUI widgets) үшін негізгі класстар болып табылады.
Ол компоненттерге жататындар: батырмалар, мәтіндік өрістер және т.б. Сонымен бірге, ол басқа контейнерлер мен виджеттер үшін көрінбейтін кон - тейнер болып келетін ViewGroup классы үшін негізгі класс болып табылады. Ол пайдаланушылық интерфейс компоненттерінің орналасу қасиеттерін анықтайды. Android қосымшаның интерфейсі UI компоненттердің иерархиясы болып келеді.
2.1-сурет. Android SDK класстарының иерархиясы
Бұл иерархияны бағдарламалық түрде сипаттауға болады, бірақ интерфейс элементтерінің орналасуын оңай және тиімді түрде жүргізуге XML файл көмектеседі. Ол қабылдауға ыңғайлы тұтастық (layout file) құрылымын ұсынады. Орындалу кезінде XML файл автоматты түрде сәйкес нысандардың ағашына айналады сурет (2.2-сурет).
2.2-сурет. Пайдаланушы интерфейсінің тұтастығын анықтайтын компоненттердің иерархиясы
Intent классының экземплярлы нысандары қосымшаның негізгі компо - ненттері арасында хабарламалар жіберу үшін пайдаланылады. Төрт негізгі компоненттің үшеуі: белсенділік, сервистер және кең таратымды хабар - лама - ларды қабылдағыштар, ниет деп аталатын хабарламаның көмегімен активация - лана алатындығы белгілі. Мұндай хабарламалар бір немесе бірнеше қосымша - лардың компонентетрінің кешігіп байланыстыру құралдары болып табыла - ды. Intent классының экземпляры орындалуы тиіс операциялардың сипат - тамалары көрсетілген деректер құрылымы болып келеді және әдетте белсен - - ділікті немесе сервисті іске қосу үшін қолданылады. Кең таратымды хабарлама - ларды қабылдағыштар жағдайында, Intent нысаны, орындалған немесе жария - лан - ған оқиғалардың сипаттамаларына ие [11].
Компоненттердің әр типі үшін ниеттерді жіберудің өзіндік механизмдері бар. Белсенділікті іске қосу немесе жұмыс істеп жатқан белсенділікте жаңа әрекетті жасау үшін, Context.startActivity()илиActivity. startActivityForResult() әдісіне ниет нысанын жіберу керек.
Сервисті іске қосу немесе жұмыс істеп жатқан сервиске жаңа нұсқаулықтарды жіберу үшін, ниет нысанын Context.startService() әдісіне жіберу керек. Сонымен бірге, ниет нысан, шақырған компонент пен сервисті өзара байланыстыру үшін Context.bindService() әдіске жіберілуі мүмкін.
Ниет нысанды барлық қызыққан кең таратымды хабарламаларды қабылдағыштарға жеткізу үшін, оны төмендегі кең таратымды әдістердің кез-келгеніне жіберу керек: Context.send OrderedBroadcast(), Context.send - Sticky - Broadcast(), Context. sendBroadcast().
Әрбір жағдайда, Android жүйесі ниетке жауап ретінде сәйкес компонентті табады: белсенділік, сервис немесе көптеген кең таратымды хабарламаларды қабылдағыштар, қажет болған жағдайда оны іске қосады. Осы хабарламалар жүйесінде қабаттасулар болмайды: белгілі бір компонентке жіберілген ниет хабарламаны тек осы компонент қана қабылдайды.
2.3-суретте ниеттерді (Intent) жіберу қалай жүзеге асырылатын көруге болады, бұл жағдайда бір белсенділік басқасын іске қосады. А белсенділік әрекеттің сипаттамасы бар ниетті (Intent) жасайды және оны startActivity() әдісіне жібереді. Android жүйесі барлық қосымшалардың ниеттерге сәйкес - тілігін тексереді, егер сәйкестілік табылған болса, жүйе сәйкес белсенділігін іске қосады. Ол үшін onCreate() әдісі шақырылады және оған Intent ниет ныса - ны жіберіледі.
Белсенділік - пайдаланушының графикалық интерфейсін тасымалдайтын терезе. Белсенділік терезесі әдетте құрылғының бүкіл экранын алады, бірақ жартылай мөлдір немесе қалқымалы диалогтық терезелерді жасау мүмкіндігі бар. Мобильді қосымшалар әдетте, көп терезелі болады, яғни бірнеше белсенділікке ие, әр терезе бір белсенділік болады. Белсенділіктердің бірі ең басты болып анықталады және қосымша бірінші рет іске қосылған кезде пайдаланушы дәл соны көреді. Сонымен қатар бір экранда бірнеше белсенділік болуы да мүмкін.
Әрбір қосымша экраны Activity классының мұрагері болып табылады. Белсенділікті жасау үшін тікелей түрде немесе оның ұрпақтары арқылы Activity классының мұрагер классын жасау қажет. Бұл класста жүйе белсенділіктің өмір сүру циклін басқару үшін, шақырған барлық әдістерді жүзеге асыру керек.
2.3-сурет. Ниеттерді жіберу (Intent)
Мұндай әдістердің саны жеті:
onCreate() - жүйе белсенділік жасау кезінде шақыратын әдіс. Әдісті жүзеге асыру кезінде белсенділіктің негізгі компоненттерін жүктеу қажет және көп жағдайда тұтастырудың (layout file) сәйкес XML-файлын қосу үшін setContentView().
onRestart() - тоқтатылған белсенділікті іске қосу қажет болған жағдайда, жүйе шақыратын әдіс. Осы әдістен кейін onStart() әдісі шақырылады.
onStart() - белсенділік пайдаланушыға көрінетін болудың алдында шақырылатын әдіс. Осы әдістен кейін onResume() шақырылады [12].
onResume() - белсенділік пайдаланушымен әрекеттесуден бұрын шақырылатын әдіс. Осы әдістен кейін onPause() шақырылады.
onPause() - фокустың белсенділігі жоғалған кезде шақырылатын әдіс. Бұл әдісте осы сессиядан тыс жерде сақталуы тиіс барлық өзгерістерді белгілеу керек. Егер белсенділік бірінші планға қайта оралатын болса onResume() шақырылады, ал егер белсенділік пайдаланушыға көрінбейтін болса, onStop() шақырылады.
onStop() - белсенділік пайдалануға көрінбей қалған жағдайда шақырылатын әдіс. Осы әдістен кейін белсенділік пайдаланушымен әрекеттесуге оралатын болса onRestart() шақырылады, ал егер белсенділік жойылып жатса onDestroy() шақырылады.
onDestroy() - белсенділік жойылудың алдында жүйе шақыратын әдіс. Бұл әдіс белсенділік аяқталған кезде немесе жүйе ресурстарды босату үшін белсенділікті жойып жатқан кезде шақырылады. isFinishing() әдісінің көмегімен екі сценарийді ажыратуға болады. Бұл белсенділік қабылдай алатын ең соңғы шақыру.
Жоғарыда көрсетілген әдістерді жүзеге асыру кезінде, бірінші кезекте үнемі аналықтың сәйкес әдісін шақыру керек.
Қарастырылған әдістер белсенділіктің өмір сүру циклін анықтайды.
2.4-суретте белсенділік бір күйден екінші күйге өтуі мүмкін жолдарды көруге болады. Тік бұрыштарда белсенділік күйлері ауысуы кезінде шақырылатын әдістер көрсетілген.
Белсенділік шын мәнінде үш күйдің бірінде болуы мүмкін:
* Орындалып жатыр (running). Белсенділік бірінші планда болады және енгізу фокусын ұстап тұрады. Егер мұқият қарасақ, бұл күйге белсендік onResume() әдісі шақырылған кезде түсетінін көруге болады. Белсенділік осы күйде болған кезде, оның процессін жүйе жоя алмайды [13].
* Уақытша тоқтатылған. Белсенділіктің бір бөлігі көрінеді, бірақ енгізу фокусы жоғалып кеткен. Бұл күйге белсенділік onPause() әдісі шақырылған кезде түседі. Бұл күйде белсенділік жауынгерлік әзірлікте болады, яғни, кез-келген жағдайда енгізу фокусын алып белсенді болуы мүкін. Алайда бұл күйде белсенділік процессі, жадының қатты жетіспеушілігі болған кезде жүйемен жойылуы мүмкін.
* Тоқтатылған. Белсенділік толығымен көрінбейді. Бұл күйге белсенділік onStop әдісі шақырылған кезде түседі. Бұл күйде белсенділік өмірге қайта оралуы мүмкін және ақпараттарды қалпына келтіруге қажетті барлық күйлерді сақтайды, бірақ белсенділік процессі, жад басқа мақсаттар үшін қажет болған жағдайда жойылуы мүмкін.
Сервис фондық режимде ұзақ жүретін операцияларды орындауға арналған қосымша компоненті болып табылады. Сервистерді жүзеге асырудың екі тәсілі бар:
* бірінші тәсіл сервис іске қосылған (stated) және фондық режимде дербес түрде жұмыс істейтіндігіне негізделеді, бұл кезде ол өзінің мақсатын шешпегенше ұзақ уақыт жұмыс істей алады;
* екіншісі сервис кейбір компонентке немесе бірнеше компоненттерге байланған (bound) деген тұжырымдамаға ие. Бұл жағдайда сервис компонентпен әрекеттесу үшін интерфейс ұсынады және кем дегенде бір компонентке байланған болса, жұмыс істей береді, басқа компоненттермен байланыс үзілген кезде, сервистің жұмысы аяқталады.
Сервисті құрастыру үшін тікелей немесе оның ұрпақтары арқылы Service классының мұрагер классын жасау қажет. Бұл ретте классты жүзеге асыру кезінде, сәйкес жағдайда сервистің өмір сүру циклін басқаратын және компоненттерді сервиспен байланыстыру механизмедерін қамтамасыз ететін кейбір әдістерді қайта анықтау (яғни, өзіндік жүзеге асырылуын жазу) қажет. Сервисті жасау кезінде жүзеге асыруды талап ететін ең маңызды әдістерді қарастырайық.
2.4-сурет. Android платформасындағы белсенділіктің өмір сүру циклі
onStartCommand() - кейбір компонент, мысалы, белсенділік startService() әдісін шақырған кезде жүйе шақыратын әдіс. Бұл жағдайда сервис ұзақ уақыт бойы фондық режимде іске қосылуы және жұмыс істеуі мүмкін, сол себепті өзінің жұмысы аяқталғаннан кейін, сервистің тоқтатылуын қарастыру керек. Сервистің тоқтауы үшін, сервис өз жұмысын өзі тоқтатқан кезде stopSelf() әдісі, ал сервис жұмысын басқа кейбір компонент тоқтатса stopService() әдісі қолданылады. Егер сервистің дербес жұмыс істеуі қарас - тырылмайтын болса (яғни, ол тек кейбір компоненттермен байланысып қана жұмыс істейді), onStartCommand әдісінің жүзеге асырылуын жазудың қажеттілігі жоқ.
onBind() - кейбір компонент сервисті өзіне байлағысы келіп және bindService әдісін шақырған кезде, жүйе шақыратын әдіс. Бұл әдіс компонент клиент сервиспен әрекеттесуі үшін қолданылуы мүмкін IBinder интерфейсінің жүзеге асырылуын қайтаруы тиіс. onBind() әдісін кез-келген жағдайда жүзеге асыру керек, бірақ, сервисті басқа қандай да бір компонентпен байланыстыру жобаланбаса, қайтарылатын мән null-ге тең болуы тиіс [14].
Сервис дербес бірлік ретінде іске қосылуы мүмкін, соның салдарынан ол кейбір компоненттерге байлануы мүмкін. Бұл жағдайда сервисте onStartCommand() және onBind() әдістерінің екеуі де жүзеге асырылуы тиіс.
onCreate() - біріншілік баптауларды орындау үшін, сервиске жүгіну кезінде жүйе шақыратын әдіс. Бұл әдіс onStartCommand() немесе onBind() әдістерін шақырудан бұрын шақырылады.
onDestroy() - сервис өзі жасалған мақсаттардың бәрін орындаған кезде немесе ешқандай компонентпен байланысы жоқ болып, оның қызметтері қажет емес болған жағдайда, жүйе шақыратын әдіс. Бұл әдісті жүзеге асыруда, ағындар, тіркелген тыңдаушылар, қабылдағыштар секілді барлық ресурстардың босатылуын алдын-ала қарастыру керек. Бұл әдіс сервис қабылдай алатын ең соңғы шақыру болып саналады.
2.5-суретте сервистің өмір сүру циклі көрсетілген, сол диаграмма дербес сервердің өмір сүру циклін көрсетсе, оң диаграмма - кейбір компоненттермен байланысқан сервистің өмір сүру циклін көрсетеді. Суретте сервистің өмір сүру циклінің белсенділіктің өмір сүру циклінен әлдеқайда оңай екендігі көрінеді. Алайда, құрастырушы үшін сервистің қалай жасалатындығы, іске қосы - ла - тын - дығы және өзінің жұмысын аяқтайтындығы әлдеқайда маңызды болуы мүмкін, себебі сервис фондық режимде жұмыс істейді және пайдаланушы кейбір жағдайларда сервистің жұмысы жасалып жатқандығын байқамауы да мүмкін.
Android тек бірінші планда жұмыс жасайтын белсенділікке жүйе ресурс - тары жетіспеген жағдайда ғана сервистердің жұмысын мәжбүрлі түрде аяқ - тайды. Жұмыс істейтін сервистердің басымдықтары тоқтап тұрған немесе то - лық түрде көрінбейтін белсенділіктерге қарағанда жоғары болады, ал сервис жұмыс істеп тұрған белсенділікпен байланысса, онда оның басымдықтары одан да жоғары болады. Екінші жағынан, уақыт өте келе, дербес жұмыс істей алатын сервистердің басымдықтары азаяды және ресурстар қажет болған кезде, олар - дың жүйемен тоқталу мүмкіндіктері артады. Осыған байланысты, сервис - терді жүйеден қайта іске қосуды талап ететіндей қылып құрастырған дұрыс. Егер жүйе сервистің жұмысын мәжбүрлі түрде тоқтатқан жағдайда, ол ресурс - тар босаған кезде, қайтадан іске қосатын болады [15].
Контент-провайдер деректер қоймасына қол жеткізу құқығын басқарады. Провайдерді жүзеге асыру үшін Android қосымшада қосымша манифестіне сәйкес класстар жинақтамасы жасалуы тиіс. Осы класстардың бірі контент-провайдер және басқа қосымшалар арасында интерфейсті қамтамасыз ететін ContentProvider классының мұрагері болуы тиіс.
2.5-сурет. Android платформасындағы сервистің өмір сүру циклі
Бұл компоненттің негізгі міндеті басқа қосымшаларға деректерге қол жеткізу мүмкіндігін беру болып табылады, алайда қосымшада пайдаланушыға контент-провайдердің басқаруында жататын деректерді сұрауға және өзгерту ешкім кедергі келтіре алмайды.
Мобильді қосымшаларда контент-провайдерлер келесі жағдайларда қажет болады:
* қосымша басқа қосымшаларға күрделі деректерді немесе файлдарды ұсынады;
* қосымша пайдаланушыларға күрделі деректерді басқа қосымшаларға көшіруге мүмкіндік береді;
* қосымша іздеу платформасын (framework) пайдалана отырып, арнайы іздеу нұсқаларын ұсынады.
Егер қосымша контент провайдерді пайдалануды талап ететін болса, ... жалғасы
Кіріспе
1 Android ОЖ қосымшаны құрастыру технологиясын қарастыру
Android операциялық жүйесіне арналған қосымшаларды құрастыру
2 Қосымшаның ақпараттық жүйесін жобалау және бағдарламалау тілдерін таңдауды негіздеу
2.1 Android-қа арналған қосымшаны ұйымдастыру және жобалау
2.2 Біріздендірілген модельдеу тілі UML
3 Қосымшаның ақпараттық жүйесін құpу тexнoлoгияcы мeн әдicтeмeci
CRM жүйесімен жұмыс істеуді қарастыру
Қорытынды
Пайдаланылған әдебиеттер тізімі
Кіріспе
Бүгінгі күні смартфондардың адам өміріне көмегі біз ойлағаннан әлде қайда көп тиіп жатыр. Оның көмегімен көптеген ақпараттарға қол жеткізуге, қашықтықтан объектілерді бақылауға, тіпті жол белгілерін тануға болады. Мәселен, көлігімізбен жол жүріп бара жатып, жол белгілерін байқамай қалуы - мыз мүмкін, соның салдарынан жол жүру ережелері бұзылып жатады. Жол белгілерін тану мүмкіндігі заманауи құрылғылардың көмегімен оңай, әрі арзан жүзеге асырылады, бірақ мұндай мүмкіндіктерді мобильді құрылғыларда қолдану республикамызда өте сирек кездеседі.
Android, Linux операциялық жүйесі негізінде жасалған. Программаның және ядроның арасында API қабаты және нативті кодтағы кітапхана орналас- қан. Программа виртуалды машина Java-да (Dalvik Virtual Machine) орын - далады.
Android-та көптеген қосымшаларды бір уақытта ашу мүмкіндігі бар. Бірақ, бір қосымша толығымен бүкіл экранды алады. Ағымдағы қосымшаны қолдана отырып басқа программаны қосуға немесе жаңасын ашуға болады. Тарихын көруге болатын браузерге ұқсайды.
Android арнаулы механизмді қолданып, әрекеттерді Intent негізде жүргі - зеді. Яғни, белгілі әрекетттер істелген кезде (қоңырау соғу, хабарлама жіберу, терезені көрсету), Intent шақырылады.
Тағы да, Android демоға ұқсас Linux серверлерін ұстайды, олардың атқару қызметі керекті әрекетті фондық режимде орындалады (мысалы, өленнің ойналуы). Программада деректерді айырбастау үшін Content providers провайдері қолданылады. Айтылмыш жұмыс үшін деректер провайдерін пайдаланып, қолданушының құрылғысына орнату керек.
Android - коммуникаторларға, планшеттарға, цифрлық ойнатқыштарға, цифр - - лық фоторамкаларға, қолға киетін сағаттарға, нетбук және смартбуктарға арналған операциялық жүйе. Программаларды өңдеудегі негізгі тілдердің бірі Java. Программаны жасау үшін Eclipse ортасын қолданамыз, AndroidSDK мобильдік құрылысы SDK эмуляторы арқылы іске асады. Java объектісіне негізделген тіл. Бірінші орында ол қолданушыға жеңіл әрекеттестікті көрсетеді.
1
1 Android операциялық жүйесіне арналған қосымшаларды құрастыру
Android-қа арналған қосымшаны құрастырудан бұрын, осы мақсатқа қажет болатын құралдарды қарастырсақ, Android-қа арналған мобильді қосым - ша - ларды жасау құралдардын белгілеп алуға болады. Құрастыру процессін жеңіл - де - тетін қосымша көптеген жүйелер бар.
Міндетті түрде қолдану керек құралдарға Android SDK - мобильді қосым- шаны жасауға, компиляциялауға және құрастыруға қажетті құралдарын жатқы - за аламыз. Мысалы, бағдарламалау құралдарының жиынтығы. Android SDK құрамына кіретін ең маңызды құралдарды қарастырайық.
SDK Manager - Android SDK компоненттерін жүктеуге мүмкіндік беретін құрал. Android SDK дестелерін және олардың мәртебелерін көрсетеді: орнатыл- ған (Installed), орнатылмаған (Not Installed), қол жетімді жаңартулар (Update available). Android SDK Manager 1.1 суретте көрсетілген.
1.1-сурет. Android SDK Manager
Debug Monitor - графикалық интерфейсті Android қосымшаларды талдауға және дұрыстауға арналған бірнеше құралдарға көрсететін дербес құрал. Ол құралдар DDMS (Dalvik Debug Monitor Server) порттарды жібереді, құрылғы экранын қармау қызметтерін орындайды, Android әрекеттері жөніндегі ақпараттарды шынайы уақыт режимінде (logcat) жіберуді ұсынады.
Hierarchy Viewer Android қосымшаның пайдаланушылық интерфейсін реттеуге және оңтайландыруға мүмкіндік береді [1].
Tracer for OpenGL ES - мобильді қосымшада пайдаланылатын OpenGLES кодты талдауға арналған құрал. OpenGLES командаларын қармап және оларды жеке кадрлар бойынша көрсетуге мүмкіндік береді. Бұл графикалық команда - лар - - - дың қалай орындалатындығын түсінуге көмектеседі.
Android Emulator (emu - la - tor) - құрастырушы компьютерінде жасалатын және жұмыс істейтін виртуалды мобильді құрылғы. Ол шынайы құрылғыларды емес, мобильді қосымшаларды құрас - тыруда және сараптауда пайдаланылады.
AVD Manager - Android Emulator-да қарастырылатын, виртуалды Android құрылғыларын құрастыруға және оларды басқаруға арналған графикалық ин - тер - - - фейс. Monitor құралының терезесі 1.2 суретте көрсетілген.
1.2-сурет. Monitor құралының терезесі
Android Debug Bridge (adb) - эмулятор немесе компьютерге жалғанған шынайы Android құрылғының күйін бақылауға мүмкіндік беретін икемді құрал. Сонымен бірге, Android қосымшаны (.apk файлы) шынайы құрылғыға орнату үшін пайдаланылуы мүмкін.
Біз Android SDK құрамына кіретін негізгі құралдарды қарастырдық. Android-қа арналған мобильді қосымшаларды құрастыру үшін, SDK құралдарын жақсы білудің өзі жеткілікті. Жобаларды дайындауға қажетті қосымша нұсқаулықтар, компиляциялар, командалық жолдан іске қосулар Google-дың нұс - - - қау - - лығында берілген [2].
Қазіргі заманғы жағдайларда БЖ құрастыру көп жағдайда кіріктірілген құрастыру орталарын (IDE) пайдалану арқылы жүргізіледі. IDE-нің бірнеше басымдылықтары бар: қосымша компиляциясы, жинақтау және іске қосу процесстері әдетте автоматтандырылған, осыған байланысты, бастаушы құрастырушылар үшін алғашқы қосымшаны жасау қиынға соқпайды. Бірақ құрастырумен шындап айналысу үшін, ортаның мүмкіндіктерін зерттеуде үлкен күш пен уақыт жұмсау керек. Android құрастыруға арналған IDE - -ді қарастырайық. Алдымен Google ұсынған екі құрастыру ортасы жөнінде айтып кетейік: Android IDE (ADT) және Android Studio.
1 Android IDE - Eclipse-ке негізделген Android-қа арналған құрастыру орта- сы. Мобильді қосымшаларды құрастыруға, жинақтауға және ретке келтіру - ге арналған кіріктірілген құралдарға ие. Android IDE негізгі құрастыру орталарының бірі. Бұл ортаның мүмкіншіліктері өте көп. Алдымен, эмуляторда және шынайы құрылғыда қосымшаны жасап, іске қосу үшін ортаны орнатып, баптап алу қажет. Android Studio құрастыру ортасы 1.3 суретте көрсетілген.
2 Android Studio - IntelliJ IDEA-ге негізделген, Android-қа арналған құрасты- ру ортасы. Android IDE секілді, құрастыру және ретке келтіруге арналған кіріктірілген құралдарға ие. IntelliJ-дің мүмкіншіліктеріне қосымша түрде, Android Studio-да келесідей мүмкіндіктер бар:
* Gradlie-ке негізделген қосымшаны жинақтауды қолдау;
* Android үшін ерекше болып саналатын рефакторинг және ақауларды жыл- дам жөндеу;
* өнімділікпен, басқа нұсқалармен сәйкестендіру және басқа да мәселелерді іздеуге арналған lint құралдары;
* ProGuard мүмкіндіктері (кодты қысқартуға, оңтайландыруға арналған утилита) және қосымшалардың қолдары (подсписи);
* үлгілерге негізделген, жалпы Android құрылымдары мен компоненттерін жасауға арналған мастерлер;
* экранның көптеген өлшемдерінде және ажыратымдылықтарында жұмыс істей алатын WYSIWYG редактор, іске қосылған қосымшаны бірден бірне- ше құрылғыларда және шынайы уақыт режимінде көрсететін, алдын-ала қарау терезесі;
* Google-дың бұлттық платформасының орнатылған қолдауы (поддержка);
* Android Studio-ның соңғы нұсқасын жүктеу, сонымен бірге орнату, баптау және жұмысты бастау туралы нұсқаулығын алуға болады;
1.3-сурет. Android Studio құрастыру ортасы
Android-қа арналған қосымшаларды құрастыруға мүмкіндік беретін басқа да құралдарды қарастырайық. Intel - Intel XDK және Intel Beacon Mountain құралдарын алатын болсақ :
* Inter XDK оңай түрде кроссплатформалық мобильді қосымшаларды құрас- тыруға мүмкіндік береді;
* құрамында БЖ жасауға, реттеуге және жинақтауға арналған құрылғылар, сонымен бірге қондырғының эмуляторы болады;
* Android, Apple iOS, Microsoft Windows8, Tizen арналған құрастыруларды қолдай алады;
* HTML5 және JavaScript құрастыру тілдерін қолдайды [3].
Мобильді қосымшаларды құрастыруға арналған HTML5 жаңа буынды құ - рал - да - ры мен Intel XDK құралдары көп қолданылады. Осы құралдардың көмегі - мен мобильді қосымшаны құрастыру жобалануда.
Intel Baecon Mountain - Android ОЖ-нің басқару жұмысын жасайтын құралдарына арналған қосымшаларын жобалауға мүмкіндік беретін құрастыру ортасы. Android-қа арналған қосымшаларды жобалауға, құрастыруға, реттеуге және оңтайландыруға мүмкіндік беретін құралдарға ие. Құрастырушының құрастыру жүйесін өзекті күйде қолдап отыру қажеттілігінен босатады. Intel Atom және ARM процессорлары негізіндегі мақсаттық платформаларды құрастыруға мүмкіндік береді. Beacon Mountain Android IDE (Eclipse, Android ADT, Android SDK ) негізінде құрастырылған, күрделі құрастырулар мен оңтайландырулар үшін келесідей Intel құралдары қосылған:
* Intel Hardware Accelerated Execution Manager (Intel HAXM) - құрастыру ортасында эмулятор жұмысын күшейту үшін Intel (Intel VT) виртуалдандыру технологиясын пайдаланатын, аппараттық түрде қолдау табатын виртуалдандыру процесссоры.
* Intel Graphics Performance Analyzers (Intel GPA) System Analyzer - Android ОЖ-нің басқаратын Intel Atom процессоры бар мобильді қондырғыларын қолдайды. Құрастырушыларға OpenGL процедураларын қолдану кезінде жүйенің жүктелуін оңтайландыруға мүмкіндік береді. Шынайы уақыт режимінде CPU, GPU және OpenGL ES API жүктеулігін көрсететін көптеген жүйелік метриктерді алуға мүмкіндік береді. Құрастырушы графиканы өңдеу кезінде тар жерлерді анықтау үшін бірнеше графикалық тәжірибелерді іске қоса алады.
* Intel Integrated Performance Primitives (Intel IPP) Preview - Android ОЖ басқаратын Intel платформасына ие мобильді қондырғыларды қолдайтын, деректер мен суреттерді оңтайлы түрде өңдейтін кітапхана. Preview нұсқасы Android ОЖ қолдайтын Intel IPP-дің толық нұсқасының бір бөлігі.
* Intel Threading Building Blocks (Intel TBB) - масштабталатын қосым - ша - лар - ды құрастыруға және өнімділікті арттыруға арналған, кеңінен қолданы - латын, сенімді C++ үлгілерінің кітапханасы. Android басқаратын Intel плат - форма - - сына ие мобильді құрылғыларды қолдайды. Сенімді алгоритмдер құрас - тыру - шыларға С ++ мобильді қосымшаларын тиімді түрде параллель - деуге мүм - кіндік береді. Бұл энергетикалық шығындардың азаюы кезінде өнімділікті арттырады. Intel Beacon Mountain қолдау беті 1.4 суретте көрсетілген.
1.4-сурет. Intel Beacon Mountain қолдау беті
Marmalade SDK аспаптарын (инструментарий) назардан шығармау керек.
Marmalade SDK - Ideaworks3D Limited ұсынатын кроссплатформалық SDK. Мобильді қондырғыларды құрастыруға, сараптауға және өрістетуге арналған кітапханалар, үлгілер, құралдар және құжаттамалардың жиынтығы болып келеді. Негізінен ойындарды құрастыру үшін қолданылады. Cut the Rope және Plants vs. Zombies секілді көптеген ойындар осы бағдарламалық құралдарды пайдаланылып құрастырылған. Өкінішке орай, Marmalade SDK прориетарлық бағдарламалық жасақтама болып келеді (ең арзан лицензиясы ай сайын $15) [4].
Отандық құрастырушылар туралы айтпай кетуге болмайды. Мысалы, 1С компаниясы заманмен қатар жүреді, 1С 8.3 платформасының нұсқасы мобильді қосымшаларды құрастыруға мүмкіндік береді. 1С: Предприятие 8. Расшире- ние карманных компьютеров бағдарламалық өнімі 1С: Предприятия 8 ақпа - рат - тық қорларының деректерімен мобильді құрылғыларда (қалталы компьютерлер, коммуникаторлар, деректерді жинау терминалдарында), сонымен бірге 1С: Предприятия 8 ақпараттық қорларына тікелей қол жеткізу мүмкіндігіне ие емес жеке компьютерлерде (соның ішінде ноутбуктарда) жұмыс істеуге мүмкіндік береді.
Әрине бұл бағдарламалық өнімнің қолдану аясы өте кішкентай, бірақ кейбір жағдайларда бұл өте ұтымды шешім болуы мүмкін.
1С мобильді қосымшалардың редакторы 1.5 суретте көрсетілген.
Эмуляция. Android стандартты эмуляторы. Эмуляция (ағыл.emulation) есептеуіш техникада - бағдарламалық, аппараттық кешендер немесе олардың үйлесулері. Олар бір есептеуіш жүйенің (қонақ) функцияларын басқа есептеу жүйесіне (хост), эмуляциялық тәртіп тұпнұсқаның (қонақтың) тәртібіне мүмкін- дігінше сәйкес болатындай етіп көшіруге (эмуляциялауға) арналған.Оның мақсаты, асбтрактілі модельдің тәртібі тек иммитацияланатын компьютерлік модельдеудің әртүрлі формаларына қарағанда, тәртіпті максималды түрде дәл қылып жаңғырту болып келеді.
1.5-сурет. 1С мобильді қосымшалардың редакторы
Эмулятор - компьютерде іске қосылатын, виртуалды мобильді құрылғы. Эмулятордың көмегімен шынайы құрылғыларды пайдаланбай-ақ, қосым - ша - ларды құрастыруға және сараптауға болады. 1.6-суретте іске қосылған стан - дарт - ты эмулятордың үлгісі көрсетілген.
1.6-сурет. Android SDK эмуляторы Hello, world қосымшанысының іске қосылу процесі
Эмуляторларды қолданудың басымдылықтарына қолданудың оңайлығын және тегін болуын жатқызуға болады. Құрастырушыға әртүрлі смартфондарда жұмыс істеу қабілеттілігін тексеру үшін, әртүрлі сипаттамалары көптеген құрыл - - - ғыларды сатып алудың қажеттілігі жоқ. Тек талап етілетін сипаттамалары бар эмуляторларды жасап және оларда қосымшаларды іске қосу ғана жеткілікті. Өкінішке орай, эмуляторлардың кемшілігі де жоқ емес, ол көп жүйелік ресурс - тарды талап етеді.
Компьютер мен смартфон процессорларының архитектурасындағы айырмашылықтардың әсерінен баяу іске қосылады. Қазіргі заманғы дербес компьютерлер х86 және х64 архитектураларында құрылған, ал Android ОЖ қолданатын көп - те - ген смартфондар - ARM-да жасалған. Бір архитектурадан екінші архитектураға эмуляциялау процессі өте күрделі болады және өте баяу жүреді.
Кейбір жағдайларда стандартты эмулятор жеткіліксіз болады. Бұл жерде мәселе, қарапайым компьютерлерде жоқ смартфондық мүмкіндіктер жөнінде (мысалы, gps датчигі немесе акселометр) айтылады. Мұндай жағдайларда толығымен реттеуді тек шынайы құрылғыны қолдану арқылы ғана жүргізуге болады .
Android SDK-мен бірге келетін стандартты эмулятор көп адамдардың көңілінен шықпайды. Баламалы эмуляторлардың құрастыруларын және дамуын қолдай алатын жобалар бар. Мысал ретінде Genymotion (1.7-сурет) Android-тың жылдам эмуляторын (құрастырушылардың пікірінше) келтіруге болады. Оның ішінде алдын ала бапталған Android (OpenGL күшейткіші бар х86) үлгілері (образ) бар. Genymotion Linux, Windows және Mac OS X үшін қол жетімді, және өзінің жұмысы үшін VirtualBox-ты талап етеді. Басқаша айтқанда, Genymotion деп өзінде орнатылған Android ОЖ бар виртуалды машинаны айтамыз. Жүйелік ресурстардың көп шығыны мәселесін шешпейді, бірақ іске қосу жылдамдығы едәуір артады. Қазіргі уақытта белсенді түрде дамуда.
1.7-сурет. Genymotion баламалы эмуляторы
Мобильді қосымшаларды құрастыруға кірісе бастағанда, негізінен қандай қосымшалардың түрлері бар екендігі туралы білу керек. Өйткені, қосымша қандай типке жататындығы анықталатын болса, оны құрастыру процессі ке - зінде қай жерлерге негізгі көңілді аудару керек екендігі түсінікті бола бастайды. Қосымшалардың келесідей түрлерін белгілеуге болады:
Алдыңғы пландағы қосымшалар экранда көрінетін кезде ғана өз функция - ларын атқарады, кері жағдайда ол тоқтап тұрады. Мұндай қосымшаларға ойындарды, мәтіндік редакторлар, видожаңғыртқыштарды жатқызуға болады. Қосымшаларды құрастыру кезінде белсенділіктің өмір сүру циклін егжей-тегжейлі зерттеу қажет. Фондық режимге ауысу және қайта кіру процесстері өте жұмсақ түрде орындалуы тиіс, яғни қосымшаның бірінші планға қайта оралуы кезінде, ол мүлдем жоғалмағандай түрде болуы тиіс. Бұл жұмсақтыққа қол жеткізу үшін фондық режимге кіру кезінде қосымша өзінің күйін сақтағанын, ал бірінші планға шығуы кезінде оның қалпына келуін қадағалау керек. Назар аудару керек тағы бір мәселе, бірінші пландық қосымшаны құрастыру кезінде оның интерфейсінің ыңғайлы және түсінікті болуы .
Фондық қосымшалар баптаудан кейін пайдаланушымен ешқандай әрекеттесуге түспейді, көп уақыт бойы олар жасырын күйде жұмыс істейді. Мұндай қосымшаларға мысал ретінде қоңырауларды экрандау, автоматты SMS жауап қайтарғышын көрсетуге болады. Көп жағдайда фондық қосымшалар аппараттық жабдықтаманы, жүйе немесе басқа қосымшалар тудырған оқиға - ларды қадағалауға бағытталған. Тіптен көрінбейтін сервистерді жасауға болады, бірақ олар басқаруға келмейтін болып қалады. Рұқсат етілетін әрекеттер: сервистің санкцияланған іске қосылуы, баптау, қажет болған жағдайда оның жұмысын тоқтату немесе кідірту [7].
Аралас қосымшалар көп уақыт бойы фондық режимде жұмыс істейді, бірақ пайдаланушымен әрекеттесуге баптаудан кейін де рұқсат ете алады. Әдетте, пайдаланушылармен әрекеттесу қандай да бір оқиғаны хабарландыру - мен шектелуі мүмкін. Мұндай қосымшаларға мысал ретінде мультимедиа-жаңғыртқыштар, мәтіндік хабарламалардың алмасуына арналған бағдар - ла - малар, пошталық клиенттер қарастырыла алады. Бұл қосымшаларда көрінетін белсенділіктермен қатар, көрінбейтін (фондық) сервистер де болады және пайдаланушымен әсерлесу кезінде ағымдағы күйі ескерілуі тиіс. Егер қосымша алдыңғы планда болса, графикалық интерфейсті жаңарту керек болады немесе фондық режимнен пайдаланушыға болып жатқан жағдайлар жайында хабарламаларды жіберіп тұруы тиіс. Мұндай ерекшеліктерді осындай қо - сым - шаларды құрастыру барысында ескеріп отыру маңызды.
Виджеттер - жұмыс үстелінде графикалық нысан түріндегі кішкентай қосымшалар. Оған мысал ретінде динамикалық ақпаратты көрсетуге арналған қосымшаларды, яғни батарея зарядын, ауа-райын, дата және уақытты жатқызамыз. Қосымшаны құрастыруды жоспарлауда алдымен оның пайдалану тәсілдерін анықтау керек, одан кейін ғана жобалауға және құрастырудың өзіне кірісу қажет.
Android ОЖ-гі қосымшалардың жұмыс істеулерінің ұйымдастыруларына назар аударайық. Айтылып өткендей, Android-қа арналған қосымшалар Java бағдарламалық тілінде құрастырылады, .apk кеңейткіші бар файлда компиляцияланады, одан кейін осы файл Android басқармасындағы құрылғыға орнату үшін қолданылады. Орнатылғаннан кейін әрбір Android қосымшасы өзі - нің қауіпсіз құмсалғышында өмір сүреді, оның қалай көрінетіндігін сипаттасақ:
* Android операциялық жүйесі көп пайдаланушылық ОЖ болып келеді, онда әрбір қосымша жеке пайдаланушы ретінде қарастырылады;
* үнсіз келісім бойынша, жүйе әрбір қосымшаға бірегей пайдаланушылық ID тағайындайды;
* жүйе қосымшаларының барлық файлдарына қол жеткізу құқығы келесідей: қосымша элементіне сәйкес ID бар пайдаланушы ғана қол жеткізе алады;
* әрбір қосымшаға жеке Linux процессі сәйкес болады, ол қосымшаның бір компонентіне қажет болған кезде іске қосылады, қосымшаның ешқандай компонентін пайдаланбай жатқан кезде немесе басқа қосымшалар үшін жадыны босату керек болған жағдайда тоқтатылады;
* әрбір процесске Dalvik виртуалды машинасының жеке экземпляры сәйкес болады, осыған байланысты қосымшаның коды басқа қосымшалардан оқшау түрде орнатылады.
Android ОЖ-нің көрсетілген функционалдау идеялары минималдық артықшылықтар принциптерін жүзеге асырады, яғни әрбір қосымшаға, үнсіз келісім бойыша өзінің жұмысына қажетті ғана компоненттерге қол жеткізу құқығы берілген. Осылайша, қосымшаның өте қауіпсіз жұмыс істеу ортасы қамтамасыз етіледі.
Алайда, қажет болған жағдайда, қосымшалар басқа қосымшалардың деректеріне немесе жүйелік сервистерге қол жеткізуі мүмкін. Екі қосымшаға бір-бірінің деректеріне қол жеткізу керек болған жағдайда, оларға бір пайда - ланушылық ID тағайындалады. Үнемді жүйелік ресурстар үшін қосым - шалар бір Linux процессте іске қосылады және бір-бірімен ортақ виртуалды машинаның экземплярын бөледі, бұл жағдайда қосымша бір сертификатпен жазылуы тиіс. Егер де қосымшаға жүйелік деректерге қол жеткізу қажет болса, мысалы, контактілер, SMS хабарландырулар, жад карталары, камераға, Bluetooth және т.б., пайдаланушы қосымшаны орнату кезінде өкілеттілік беруі тиіс.
*
2
2.1 Android-қа арналған қосымшаны ұйымдастыру және жобалау
Android-қа арналған қосымшаның ішкі құрылымына келсек: оның архитек - тура - сы мен негізгі компоненттеріне көңіл бөлген жөн.
Android қосымшасының архитектурасы, құрылым блоктары болып сана - латын компоненттерді көп реттік қолдану идеясына негізделген. Әрбір компо - нент жеке мән болады және қосымшаның жалпы тәртібін анықтауға мүмкіндік береді.
Android жүйесінде, кез-келген қосымша басқа бір қосымшаның қажетті компо - ненттерін іске қоса алады. Мысалы, егер қосымша суретке түсіру үшін камераны пайдалануды қажет етсе, осы қосымшада камерамен жұмыс істеу белсенділігін құрудың қажеттілігі жоқ. Көп жағдайда қосымшаның өзінде камерадан суреттер алу мүмкіндігі бар, тек қана сәйкес белседілікті іске қосып, суретті алу және оны қосымшаға қайтару ғана қажет. Пайдаланушы камераның өзін қосымшаның бір бөлігі деп қарастырыуы мүмкін. Егер компонент іске қосылмай, компонентке қажетті класстарды жасап жатса, жүйе компонентті іске қосқан кезде, ол қосымшаның сол компонент жататын проце - сін іске қосады. Сол себепті басқа көптеген жүйелерге қарағанда, Android Жүйесінде қосымшалар бірыңғай шығу нүктесіне ие емес (мысалы, main () тәсілі жоқ). Жеке процессте әрбір қосымшаның іске қосылуына және файлдарға қол жеткізудің шектеулігіне байланысты, қосымша басқа қосымшаның компонентін тікелей қоса алмайды. Осылайша, басқа қосымшаның компонентін активациялау үшін, жүйеге белгілі бір компонентті іске қосу ниеті жайында хабарлама жіберу қажет, сол кезде жүйе оны активациялайды [9].
Компоненттердің төрт түрлі типтерін белгілеуге болады, әрбір тип жеке мақсат - тарға қол жеткізу үшін қызмет етеді және ерекше өмір сүру цикліне ие болады. Ол сәйкес компоненттің жасалу және бұзылу әдістерін анықтайды. Adnroid қосымшалардың негізгі компоненттерін қарастырайық:
* Белсенділіктер (Activities). Белсенділік - қосымшаның көрінетін бөлігі (экран, терезе, форма), пайдаланушының графикалық интерфейсін көрсету үшін жауап береді. Бұл ретте қосымша бірнеше белсенділіктерге ие болуы мүмкін, мысалы электрондық поштамен жұмыс істеуге арналған қосымшада, бір белсенділік жаңа хабарламалар тізімін көрсету үшін, басқасы жазу үшін, тағы бірі - хабарламаларды оқу үшін арналуы мүмкін. Қосымша пайда - ла - нушыға біртұтас болып көрінгенімен, қосымшаның барлық белсенділіктері бір-біріне тәуелсіз болады. Мысалы, камера қосымшасы дәл сол мезетте жасалған суретті белгіленген пайдалануға жіберу үшін, жаңа хабарламалар жазатын белсенділікті іске қоса алады.
* Сервистер (Services). Сервис - фондық режимде жұмыс істейтін компо - нент, уақыт бойынша ұзақ операцияларды немесе қашықтағы процесстерге ар - нал - ған жұмыстарды орындайды. Сервис пайдаланушылық интерфейсті ұсын - байды. Мысалы, сервис, пайдаланушы басқа қосымшаны қолданып жатқан кезде, музыканы жаңғырта алады, пайдаланушының белсенді - лікпен әрекет - тесуін бұғаттамай, желіден деректерді жүктей алады. сервисті компонент іске қосып, одан кейін ол өзі дербес түрде немесе осы компонентпен байланысқан түрде немесе өзара әрекеттесіп жұмыс істей алады.
* Контенттік провайдерлер (Content providers). Контент провайдер үлес - тірілген көптеген қосымшалардың деректерін басқарады. Деректер файлдық жүйеде, SQLite деректер қорында, желіде, қосымша қол жеткізе алатын кез-келген жерде сақталуы мүмкін. Контент провайдерлер басқа қосымшаларға, сәйкес құқықтары болған жағдайда, сұраныстар жіберуге немесе тіпті деректерді өзгертуге мүмкіндік береді. Мысалы, Android жүйесінде пайдаланушының контактілері жөніндегі ақпаратты басқаратын контент провайдері бар. Осыған байланысты, сәйкес құқықтары бар қосымшалар қандай да бір контакт жөніндегі ақпараттарды оқуға немесе жазуға сұраныс бере алады. Контент провайдер, шет жақта қол жеткізуге арналмаған, қосымшаның құпия деректерін оқып және жазғанда пайда болуы мүмкін [10].
* Кең таратымды хабарламалар қабылдағыштары (Broadcast Receivers). Қабылдағыш - кең таратымды хабарлауларға әсер ететін компонент. Мұндай хабарлаулардың көп бөлігін жүйе тудырады, мысалы, экран өшіп қалғанын немесе батарея зарядының төмендігі жөніндегі хабарламалар. Қосымша, соны - мен бірге, кең таратымды хабарламаларды тудыра алады, мысалы, басқа қосымшаларға кейбір деректердің жүктелгенін және қолдануға болатындығы жөніндегі хабарламалар. Қабылдағыштар пайдаланушылық интерфейсті көрсетпегенімен, олар күй панеліне, хабарлама келгені жөніндегі ескертулер жасай алады. Мұндай қабылдағыш басқа компоненттерге өткізгіш болып келеді және кішкене көлемдегі жұмыстарды орындауға арналған, мысалы, ол оқиғаға сәйкес сервисті іске қосады.
Барлық қарастырылған компоненттер Android SDK-да анықталған класс - тардың ізбасарлары болып келеді. 2.1-суретте құрастырушы әрекеттесетін негізгі Android SDK класстарының иерархиясы көрсетілген. Негізінде, класстар әлдеқайда көп, сары түспен құрас - тырушы тікелей әрекеттесетін класстар көрсетілген.
View классы пайдаланушылық интерфейстің (UI) компоненттерінің негізгі құрылымдық блогы болып келеді, ол экранның тік бұрышты аумағын анық - тайды және оқиғалардың бейнеленуін және өңделуіне жауап береді. Пайдалану - шылық интерфейстің интерактивті компоненттерін жасауға арналған виджеттер (GUI widgets) үшін негізгі класстар болып табылады.
Ол компоненттерге жататындар: батырмалар, мәтіндік өрістер және т.б. Сонымен бірге, ол басқа контейнерлер мен виджеттер үшін көрінбейтін кон - тейнер болып келетін ViewGroup классы үшін негізгі класс болып табылады. Ол пайдаланушылық интерфейс компоненттерінің орналасу қасиеттерін анықтайды. Android қосымшаның интерфейсі UI компоненттердің иерархиясы болып келеді.
2.1-сурет. Android SDK класстарының иерархиясы
Бұл иерархияны бағдарламалық түрде сипаттауға болады, бірақ интерфейс элементтерінің орналасуын оңай және тиімді түрде жүргізуге XML файл көмектеседі. Ол қабылдауға ыңғайлы тұтастық (layout file) құрылымын ұсынады. Орындалу кезінде XML файл автоматты түрде сәйкес нысандардың ағашына айналады сурет (2.2-сурет).
2.2-сурет. Пайдаланушы интерфейсінің тұтастығын анықтайтын компоненттердің иерархиясы
Intent классының экземплярлы нысандары қосымшаның негізгі компо - ненттері арасында хабарламалар жіберу үшін пайдаланылады. Төрт негізгі компоненттің үшеуі: белсенділік, сервистер және кең таратымды хабар - лама - ларды қабылдағыштар, ниет деп аталатын хабарламаның көмегімен активация - лана алатындығы белгілі. Мұндай хабарламалар бір немесе бірнеше қосымша - лардың компонентетрінің кешігіп байланыстыру құралдары болып табыла - ды. Intent классының экземпляры орындалуы тиіс операциялардың сипат - тамалары көрсетілген деректер құрылымы болып келеді және әдетте белсен - - ділікті немесе сервисті іске қосу үшін қолданылады. Кең таратымды хабарлама - ларды қабылдағыштар жағдайында, Intent нысаны, орындалған немесе жария - лан - ған оқиғалардың сипаттамаларына ие [11].
Компоненттердің әр типі үшін ниеттерді жіберудің өзіндік механизмдері бар. Белсенділікті іске қосу немесе жұмыс істеп жатқан белсенділікте жаңа әрекетті жасау үшін, Context.startActivity()илиActivity. startActivityForResult() әдісіне ниет нысанын жіберу керек.
Сервисті іске қосу немесе жұмыс істеп жатқан сервиске жаңа нұсқаулықтарды жіберу үшін, ниет нысанын Context.startService() әдісіне жіберу керек. Сонымен бірге, ниет нысан, шақырған компонент пен сервисті өзара байланыстыру үшін Context.bindService() әдіске жіберілуі мүмкін.
Ниет нысанды барлық қызыққан кең таратымды хабарламаларды қабылдағыштарға жеткізу үшін, оны төмендегі кең таратымды әдістердің кез-келгеніне жіберу керек: Context.send OrderedBroadcast(), Context.send - Sticky - Broadcast(), Context. sendBroadcast().
Әрбір жағдайда, Android жүйесі ниетке жауап ретінде сәйкес компонентті табады: белсенділік, сервис немесе көптеген кең таратымды хабарламаларды қабылдағыштар, қажет болған жағдайда оны іске қосады. Осы хабарламалар жүйесінде қабаттасулар болмайды: белгілі бір компонентке жіберілген ниет хабарламаны тек осы компонент қана қабылдайды.
2.3-суретте ниеттерді (Intent) жіберу қалай жүзеге асырылатын көруге болады, бұл жағдайда бір белсенділік басқасын іске қосады. А белсенділік әрекеттің сипаттамасы бар ниетті (Intent) жасайды және оны startActivity() әдісіне жібереді. Android жүйесі барлық қосымшалардың ниеттерге сәйкес - тілігін тексереді, егер сәйкестілік табылған болса, жүйе сәйкес белсенділігін іске қосады. Ол үшін onCreate() әдісі шақырылады және оған Intent ниет ныса - ны жіберіледі.
Белсенділік - пайдаланушының графикалық интерфейсін тасымалдайтын терезе. Белсенділік терезесі әдетте құрылғының бүкіл экранын алады, бірақ жартылай мөлдір немесе қалқымалы диалогтық терезелерді жасау мүмкіндігі бар. Мобильді қосымшалар әдетте, көп терезелі болады, яғни бірнеше белсенділікке ие, әр терезе бір белсенділік болады. Белсенділіктердің бірі ең басты болып анықталады және қосымша бірінші рет іске қосылған кезде пайдаланушы дәл соны көреді. Сонымен қатар бір экранда бірнеше белсенділік болуы да мүмкін.
Әрбір қосымша экраны Activity классының мұрагері болып табылады. Белсенділікті жасау үшін тікелей түрде немесе оның ұрпақтары арқылы Activity классының мұрагер классын жасау қажет. Бұл класста жүйе белсенділіктің өмір сүру циклін басқару үшін, шақырған барлық әдістерді жүзеге асыру керек.
2.3-сурет. Ниеттерді жіберу (Intent)
Мұндай әдістердің саны жеті:
onCreate() - жүйе белсенділік жасау кезінде шақыратын әдіс. Әдісті жүзеге асыру кезінде белсенділіктің негізгі компоненттерін жүктеу қажет және көп жағдайда тұтастырудың (layout file) сәйкес XML-файлын қосу үшін setContentView().
onRestart() - тоқтатылған белсенділікті іске қосу қажет болған жағдайда, жүйе шақыратын әдіс. Осы әдістен кейін onStart() әдісі шақырылады.
onStart() - белсенділік пайдаланушыға көрінетін болудың алдында шақырылатын әдіс. Осы әдістен кейін onResume() шақырылады [12].
onResume() - белсенділік пайдаланушымен әрекеттесуден бұрын шақырылатын әдіс. Осы әдістен кейін onPause() шақырылады.
onPause() - фокустың белсенділігі жоғалған кезде шақырылатын әдіс. Бұл әдісте осы сессиядан тыс жерде сақталуы тиіс барлық өзгерістерді белгілеу керек. Егер белсенділік бірінші планға қайта оралатын болса onResume() шақырылады, ал егер белсенділік пайдаланушыға көрінбейтін болса, onStop() шақырылады.
onStop() - белсенділік пайдалануға көрінбей қалған жағдайда шақырылатын әдіс. Осы әдістен кейін белсенділік пайдаланушымен әрекеттесуге оралатын болса onRestart() шақырылады, ал егер белсенділік жойылып жатса onDestroy() шақырылады.
onDestroy() - белсенділік жойылудың алдында жүйе шақыратын әдіс. Бұл әдіс белсенділік аяқталған кезде немесе жүйе ресурстарды босату үшін белсенділікті жойып жатқан кезде шақырылады. isFinishing() әдісінің көмегімен екі сценарийді ажыратуға болады. Бұл белсенділік қабылдай алатын ең соңғы шақыру.
Жоғарыда көрсетілген әдістерді жүзеге асыру кезінде, бірінші кезекте үнемі аналықтың сәйкес әдісін шақыру керек.
Қарастырылған әдістер белсенділіктің өмір сүру циклін анықтайды.
2.4-суретте белсенділік бір күйден екінші күйге өтуі мүмкін жолдарды көруге болады. Тік бұрыштарда белсенділік күйлері ауысуы кезінде шақырылатын әдістер көрсетілген.
Белсенділік шын мәнінде үш күйдің бірінде болуы мүмкін:
* Орындалып жатыр (running). Белсенділік бірінші планда болады және енгізу фокусын ұстап тұрады. Егер мұқият қарасақ, бұл күйге белсендік onResume() әдісі шақырылған кезде түсетінін көруге болады. Белсенділік осы күйде болған кезде, оның процессін жүйе жоя алмайды [13].
* Уақытша тоқтатылған. Белсенділіктің бір бөлігі көрінеді, бірақ енгізу фокусы жоғалып кеткен. Бұл күйге белсенділік onPause() әдісі шақырылған кезде түседі. Бұл күйде белсенділік жауынгерлік әзірлікте болады, яғни, кез-келген жағдайда енгізу фокусын алып белсенді болуы мүкін. Алайда бұл күйде белсенділік процессі, жадының қатты жетіспеушілігі болған кезде жүйемен жойылуы мүмкін.
* Тоқтатылған. Белсенділік толығымен көрінбейді. Бұл күйге белсенділік onStop әдісі шақырылған кезде түседі. Бұл күйде белсенділік өмірге қайта оралуы мүмкін және ақпараттарды қалпына келтіруге қажетті барлық күйлерді сақтайды, бірақ белсенділік процессі, жад басқа мақсаттар үшін қажет болған жағдайда жойылуы мүмкін.
Сервис фондық режимде ұзақ жүретін операцияларды орындауға арналған қосымша компоненті болып табылады. Сервистерді жүзеге асырудың екі тәсілі бар:
* бірінші тәсіл сервис іске қосылған (stated) және фондық режимде дербес түрде жұмыс істейтіндігіне негізделеді, бұл кезде ол өзінің мақсатын шешпегенше ұзақ уақыт жұмыс істей алады;
* екіншісі сервис кейбір компонентке немесе бірнеше компоненттерге байланған (bound) деген тұжырымдамаға ие. Бұл жағдайда сервис компонентпен әрекеттесу үшін интерфейс ұсынады және кем дегенде бір компонентке байланған болса, жұмыс істей береді, басқа компоненттермен байланыс үзілген кезде, сервистің жұмысы аяқталады.
Сервисті құрастыру үшін тікелей немесе оның ұрпақтары арқылы Service классының мұрагер классын жасау қажет. Бұл ретте классты жүзеге асыру кезінде, сәйкес жағдайда сервистің өмір сүру циклін басқаратын және компоненттерді сервиспен байланыстыру механизмедерін қамтамасыз ететін кейбір әдістерді қайта анықтау (яғни, өзіндік жүзеге асырылуын жазу) қажет. Сервисті жасау кезінде жүзеге асыруды талап ететін ең маңызды әдістерді қарастырайық.
2.4-сурет. Android платформасындағы белсенділіктің өмір сүру циклі
onStartCommand() - кейбір компонент, мысалы, белсенділік startService() әдісін шақырған кезде жүйе шақыратын әдіс. Бұл жағдайда сервис ұзақ уақыт бойы фондық режимде іске қосылуы және жұмыс істеуі мүмкін, сол себепті өзінің жұмысы аяқталғаннан кейін, сервистің тоқтатылуын қарастыру керек. Сервистің тоқтауы үшін, сервис өз жұмысын өзі тоқтатқан кезде stopSelf() әдісі, ал сервис жұмысын басқа кейбір компонент тоқтатса stopService() әдісі қолданылады. Егер сервистің дербес жұмыс істеуі қарас - тырылмайтын болса (яғни, ол тек кейбір компоненттермен байланысып қана жұмыс істейді), onStartCommand әдісінің жүзеге асырылуын жазудың қажеттілігі жоқ.
onBind() - кейбір компонент сервисті өзіне байлағысы келіп және bindService әдісін шақырған кезде, жүйе шақыратын әдіс. Бұл әдіс компонент клиент сервиспен әрекеттесуі үшін қолданылуы мүмкін IBinder интерфейсінің жүзеге асырылуын қайтаруы тиіс. onBind() әдісін кез-келген жағдайда жүзеге асыру керек, бірақ, сервисті басқа қандай да бір компонентпен байланыстыру жобаланбаса, қайтарылатын мән null-ге тең болуы тиіс [14].
Сервис дербес бірлік ретінде іске қосылуы мүмкін, соның салдарынан ол кейбір компоненттерге байлануы мүмкін. Бұл жағдайда сервисте onStartCommand() және onBind() әдістерінің екеуі де жүзеге асырылуы тиіс.
onCreate() - біріншілік баптауларды орындау үшін, сервиске жүгіну кезінде жүйе шақыратын әдіс. Бұл әдіс onStartCommand() немесе onBind() әдістерін шақырудан бұрын шақырылады.
onDestroy() - сервис өзі жасалған мақсаттардың бәрін орындаған кезде немесе ешқандай компонентпен байланысы жоқ болып, оның қызметтері қажет емес болған жағдайда, жүйе шақыратын әдіс. Бұл әдісті жүзеге асыруда, ағындар, тіркелген тыңдаушылар, қабылдағыштар секілді барлық ресурстардың босатылуын алдын-ала қарастыру керек. Бұл әдіс сервис қабылдай алатын ең соңғы шақыру болып саналады.
2.5-суретте сервистің өмір сүру циклі көрсетілген, сол диаграмма дербес сервердің өмір сүру циклін көрсетсе, оң диаграмма - кейбір компоненттермен байланысқан сервистің өмір сүру циклін көрсетеді. Суретте сервистің өмір сүру циклінің белсенділіктің өмір сүру циклінен әлдеқайда оңай екендігі көрінеді. Алайда, құрастырушы үшін сервистің қалай жасалатындығы, іске қосы - ла - тын - дығы және өзінің жұмысын аяқтайтындығы әлдеқайда маңызды болуы мүмкін, себебі сервис фондық режимде жұмыс істейді және пайдаланушы кейбір жағдайларда сервистің жұмысы жасалып жатқандығын байқамауы да мүмкін.
Android тек бірінші планда жұмыс жасайтын белсенділікке жүйе ресурс - тары жетіспеген жағдайда ғана сервистердің жұмысын мәжбүрлі түрде аяқ - тайды. Жұмыс істейтін сервистердің басымдықтары тоқтап тұрған немесе то - лық түрде көрінбейтін белсенділіктерге қарағанда жоғары болады, ал сервис жұмыс істеп тұрған белсенділікпен байланысса, онда оның басымдықтары одан да жоғары болады. Екінші жағынан, уақыт өте келе, дербес жұмыс істей алатын сервистердің басымдықтары азаяды және ресурстар қажет болған кезде, олар - дың жүйемен тоқталу мүмкіндіктері артады. Осыған байланысты, сервис - терді жүйеден қайта іске қосуды талап ететіндей қылып құрастырған дұрыс. Егер жүйе сервистің жұмысын мәжбүрлі түрде тоқтатқан жағдайда, ол ресурс - тар босаған кезде, қайтадан іске қосатын болады [15].
Контент-провайдер деректер қоймасына қол жеткізу құқығын басқарады. Провайдерді жүзеге асыру үшін Android қосымшада қосымша манифестіне сәйкес класстар жинақтамасы жасалуы тиіс. Осы класстардың бірі контент-провайдер және басқа қосымшалар арасында интерфейсті қамтамасыз ететін ContentProvider классының мұрагері болуы тиіс.
2.5-сурет. Android платформасындағы сервистің өмір сүру циклі
Бұл компоненттің негізгі міндеті басқа қосымшаларға деректерге қол жеткізу мүмкіндігін беру болып табылады, алайда қосымшада пайдаланушыға контент-провайдердің басқаруында жататын деректерді сұрауға және өзгерту ешкім кедергі келтіре алмайды.
Мобильді қосымшаларда контент-провайдерлер келесі жағдайларда қажет болады:
* қосымша басқа қосымшаларға күрделі деректерді немесе файлдарды ұсынады;
* қосымша пайдаланушыларға күрделі деректерді басқа қосымшаларға көшіруге мүмкіндік береді;
* қосымша іздеу платформасын (framework) пайдалана отырып, арнайы іздеу нұсқаларын ұсынады.
Егер қосымша контент провайдерді пайдалануды талап ететін болса, ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz