Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мазмны-1.docx
Скачиваний:
64
Добавлен:
21.02.2016
Размер:
1.55 Mб
Скачать
    1. Android қосымшасы компоненттері

Android жүйесінің ерекшелігі қосымша өз функциялары үшін, қолжетімділік болған жағдайда басқа қосымшалар элементтерін қолдана алады. Мысалы, егер біздің қосымшаға айналдырып көруге болатын суреттер тізімі керек болса, ал, басқа қосымшада бізге керек скроллер бар болса, оны басқа қосымшадан шақыруға болады.

Android -қосымшаларда компоненттердің төрт түрі бар:

  • әрекетшілдік (Activity);

  • қызмет (Service);ө

  • кең таратқыштық мақсатты қабылдағыш (Broadcast Recevier);

  • контент-провайдер (Content Provider).

Android операциялық жүйесінің қызықты қырларына факт ретінде, егер, әрине, олар осындай рұқсат ұсынса, ондағы қосымшалар өзінің функционалы үшін басқа қосымшалар элементін пайдалана алу болып табылады. Мысалы, егер біздің қосымшаға кескіндердің айналмалы тізімін сипаттау қажет болса, ал басқа қосымшаның, басқа қосымшалар үшін ашық, жүзеге асқан қолайлы скроллері болған болса, онда оны осы әрекеттің жүзеге асуы үшін шақырады және жеке өзінің тізім кескіндерін өңдемейді. Осымен бірге біздің қосымшаның коды басқалардың кодымен араласпайды және онымен бірікпейді. Негізінде, осындай қажеттілік туындағанда ол басқа файлдың кейбір бөліктерін ғана іске қосады. Жұмыстың осындай қағидасын қамтамасыз ету үшін жүйе, оның кез келген бөлігі қажет болғанда,қосымша процесін іске қосуға және дәл осы бөлікке java-объекттерінің данасын құруға қабілетті болу керек. Сондықтан Android қосымшасында,көпшілік жүйелерде бекітілгендей, бірде-бір кіру нүктесі жоқ. Мұның орнына оның коды өзінің жеке бүтін мәндер жиынын және қажеттілігіне қарай даналарды құра алатын, оларды пайдалана алатын жүйе компонентін ұсынады.Осындай мән-компоненттің төрт типін ерекшелеуге болады. Олардың әрқайсысымен жеке-жеке танысайық.

Activityқолданушы істей алатын, бір операцияға арналған сыртқы қолданушылық интерфейс ұсынады. Егер жеңілдететін болсақ, кейбір белсенділік бірлігі ретіндегі бұл бір ағымдық экран. Осында және алда аctivity терминін аудармасыз пайдаланатын боламыз. Бірақ та сөзбе-сөз аударма, «белсенділік» немесе «әрекет», компоненттің ортақ мағынасын дұрыс жеткізеді.

Мысалы, activity қолданушы таңдай алатын немесе олардың қолтаңбасымен тускен суреттерін бейнелейтін мәзір пунктерінің тізімін бере алады. Немесе басқа мысал – хабарламалармен шұғыл түрде алмасуға арналған қосымша контактінің бетін бейнелеу үшін бір activity пайдалана алады, басқа – таңдалған контакт үшін хабарлама құруға, үшінші – хабарламалар тарихын көру немесе жөнге келтіруді орындау және т.б. үшін.

Ағымдағы қосымшаның барлық activity бірге қызмет атқарады және бірыңғай қолданушылық интерфейсті қалыптастырады. Алайда, осымен бірге бір-бірінің аралығында тәуелсіз. Олардың әрқайсысы программист визуальды интерфейсті орналастыра алатын, терезенің құрылуын қаматамасыз ететін Аctivity базалық класының класс тармағы ретінде жүзеге асқан.

Қосымша бар болғаны бір ғана activity-ден немесе алдында айтылған мессенджердің мысалы ретинде бірден бірнешеуінен тұруы мүмкін. Activity-дің нақ қандай болатындығы және олардың қанша болатындығы нақты қосымша және оның дизайніне байланысты. Қағида ретинде, activity-дің біреуі біріншісі ретінде белгіленеді. Бұл қосымша іске қосылғанда оның қолданушыға ұсынылатындығын білдіреді. Бір activity басқа activity-ді іске қоса алады. Осылайша, бір activity-ден басқасына өту ағымдағы activity-дің келесісін шақырған кезінде орындалады.

Әрбір activity терезені үнсіз күйде ұсынады. Әдетте терезе толық экранды түрде құрылады, бірақ ол бүкіл экранның орнын алмауы да және басқа терезелердің сыртында орналасуы мүмкін. Activity-ге сонымен бірге қосымша терезелер әрекет етуі мүмкін – мысалы, аctivity жұмысының процесінде қолданушымен әрекеттесуге арналған қалқып сыртқа шығушы диалогтік терезе немесе қандай да бір маңызды баптауларды таңдау кезінде ағымдағы ақпаратты ұсынуға арналған терезе.

Терезенің визуальді мазмұны визуальді компоненттердің(немесе көрсетулердің) иерархиясы көмегімен құрылады. Визуальді компоненттер - View базалық класынан туындаған объекттер. Әрбір компонент терезенің ішінде тікбұрышты кеңістікті ұсынады. Иерархиялық компонентті ағаш түрінде елестетуге болады, ал оның ең төменгі бөлігінде(“жапырақтар”) орналасқан элементтер жоқтарын тікбұрышты аймақта участіктегі қолданушының әрекетін күтеді. Осылайша қолданушымен интерактивтік әрекеттестік жүзеге асады. Мысалыға , осылайша елестету экранда кішкене белгішесін бейнелейді және қолданушы оны шерткенде қандайда бір әрекетті инициалайды. Android операциялық жүйесінде өңдеушілердің пайдалануына қолжетімді дайын визуальді компоненттердің жиыны бар. Жиында тетіктер, мәтіндік жазық, айналдыру белдеулері, мәзір, ауыстырып-қосқыш жалаушалар және т.б.

Осындай иерархияны терезеге орналастыру үшін Activity.setContentView() әдісін шақыру қажет. View класының данасы әдістің параметрі болып табылады. Ол иерархияның түбірінде жатыр.

Services(сервистер) фондық режимде жұмыс істейтін компоненттерді ұсынады. Ол, қағида бойынша, ұзақ операцияларға және өшірілген процестердің жұмысын қамтамасыз етуге қажет. Жалпы жағдайда бұл жай ғана қосымшаның фокуста болмағанда функциялану режимі. Мұндай процестің мысалы ретінде қолданушы басқа бір жұмыс жасағанда немесе ағымдағы белсенділікті қоршаусыз деректерді алған уақытта музыканы тыңдап отыруы. Сервис өздігімен қолданушылық интерфейсті ұсынбайды, яғни қолданушымен әрекеттеспейді, есесіне іске қосылады, басқарылады және activity сияқты басқа да компоненттермен байланысады. Сонымен қатар жүйемен бірге іске қосыла алады.

Contentproviders Берілген компонент басқаларға ұсынылатын қосымшалардағы деректер жиынымен басқарылады. Бұл деректер қосымшаның қол жететіндей файлдық жүйеде, SQLite деректер қорында, желіде немесе басқа кез келген тұрақты орында сақтала алады.

Сontentprovider арқылы басқа қосымшалар деректерді сұрай алады және, егер сәйкестендірілген рұқсаттар қойылған болса, оларды өзгерту. Мысалы, Android жүйесінде контактті қолданушылық ақпаратпен басқаратын contentprovider бар. Ол кез келген қосымшаға сәйкестендірілген осы компоненттің құраушыларын санау, жазу немесе нақты адам жайлы ақпаратты өзгерту үшін шақыратын құқықтарға ие болуға мүмкіндік береді.

Басқа да ортақ жағдайларда contentprovider-ді қосымшалармен пайдаланылатын және басқалар үшін ашық болып табылмайтын оқу және деректерді жазу үшін пайдалануға болады. Мысалы, NotePad қосымшасын жазумен жасалғандарды сақтауға арналған компонент пайдаланады.

Берілген компоненттер ContentProvider-дің ішкі класы ретінде жүзеге асады. Басқа қосымшалардың берілген деректермен операцияларды орындай алу үшін олар стандартты API жиынын ұсынуы тиіс.

Broadcastreceivers - компоненті ортақ жүйелі хабарламалардың таралуына, бақылауына және әрекетке әсер етуіне жауап береді. Көптеген хабарландырулар жүйеден келеді. Мысалы, батарея қуатының аз екендігін немесе экранның өшетіндігі туралы хабарлама. Қосымша сонымен қатар ақпараттың құрылғыға жүктелгендігі және пайдалануға берілгендігі туралы сигнал секілді хабарландыруларда бастамашылық ете алады. Broadcastreceivers сервистер сияқты қолданушылық интерфейсті ұсынбайды, алайда ол қолданушыға болған қандай да бір оқиғалар туралы ескерту үшін қалып күйіндегі ескертулерді құруға қабілетті. Алайда broadcastreceiver жиі өздігімен минимальді жұмыс мөлшерін орындау үшін басқа компоненттермен әсерлеседі. Осылай, ол қандай да бір жағдайға тіркеулі әрекеттің орындалуы үшін сервисте бастамашылық ете алады.

Егер Android-тің компонентті моделін бірнеше иерархия түрінде қарастырсақ, онда еңтөменде құраушы база ретінде ОЖ ядросы орналасады.Жиынтық моделді жиі бағдарламалық стек деп те атайды. Шындығында, сөз қорытынды нәтиже алу үшін бірге жұмыс істейтінбағдарламалық өнімдер жиыны туралы болғандықтан, бұл анықтама ақылғы қонымды. Бұл үлгіде қимылдар біртіндеп орындалады және иерархия деңгейлері сонымен бірге өз арасында біртіндеп әрекеттесіп жатады.

Бәрімізге белгілі, Андроид Linux ОЖ-нің бірнеше қысқартылған ядросына негізделген, сондықтан бұл деңгейде біз тап соныкөре аламыз(версии 2.6.x). Ол жүйенің жұмыс жасауын қамтамасыз етеді және қауіпсіздікке, жадты басқаруға, энергожүйе мен процесстерге жауап береді және торлық стек және драйверлердің үлгісіне мүмкіндік береді. Ядро сонымен бірге аппаратты қамтамасыз етумен бағдарламалық стек арасындағы абстракция деңгейі сияқты жұмыс істейді.

« Жоғары » ядрода аралық жіктің бағдарламалық қамтамасыз етуі секілді, ең маңызды қолданбалар үшін базалық функционалды қамтамасыз етуге арналған кітапханалардың жиыны (Libraries) жатыр.

Яғни дәл осы деңгей жоғарғы деңгейлер үшін жүзеге асырылған алгоритмдерді беруге , файлдық қалыптарды қолдау, мәліметтерді кодтау және қайта кодтауды жүзеге асыру, (мысал ретінде мультимедиалық кодекті келтіруге болады) тағы басқаларға жауап береді. Кітапханалар C/C++ негізінде жүзеге асырылған және құрылымдардың нақты аппаратты қамтамасыз етуі үшін құрастырылған және олар алдын ала белгіленген түрде өндіруші арқылы жеткізіледі.

Кейбіреулеріне тоқталып өтсек :

SurfaceManager – Android ОЖ-де Compiz (Linux) ұқсас, бірақ көбірек ықшамдалған терезелердің композиттік менеджері қолданылады.

Оның орнына сол үшін дисплейге буферге тікелей отрисовка кестелер өндіріп алу керек, жүйе кадрлік буферге отрисовка түсетін командалар жіберіп жатыр олар басқа бірге жинақталып жатыр, әлдебіреу композициялықты құрап, ал сонан соң қалқаға қолданушыға іске аспай қалып жатыр. Терезелердің қызықты тігіссіз әсерлер, мөлдірлік құру жүйеге бұл мүмкіндік беріп жатыр және байсалды өткелдер.

MediaFramework – PacketVideoOpenCORE базасында жүзеге асырылған кітапханалар. Олардың көмегімен жүйежазуды, аудио және видео контентінің көшірмесін және статикалық суреттердің қорытындысын жүзеге асыра алады. Көптеген әйгілі қалыптарды, сонымен қоса MPEG4, H.264, MP3, AAC, AMR, PNGжәне JPG қолдайды.

SQLite – ақпараттарды сақтау үшін қолданбалар қолданатын деректер қорымен жұмыс жасауға арналған негізгі қозғалтқыш ретінде Android-та қолданылатын жеңіл салмақты және өнімді реляциялық ДҚБЖ.

3D кітапханалар — жоғары оптимизацияланған 3D-графигінің отрисовкасы үшін қолданылады, мүмкіндігінше аппаратты үдеуді қолданады. Олардың іске асуы API OpenGL ES 1.0 негізінде құрылады.

SQLite кез-келген android құрылғыда бар, оны бөлек орнатудың қажеті жоқ. SQLite TEXT(аналог String в Java), INTEGER(аналог long в Java) және REAL(аналог double в Java) типтерін қолдайды. Басқа типтерді деректер қорына енгізбей тұрып, конверттеу керек. SQLite өз еркімен деректер типін тексермейді, сондықтан сіз қатарларға арналған бір бағанға барлық сандарды жазу мүмкіндігіңіз болады және сәйкесінше керісінше.

Сонымен қатар boolean типін қолдамайды. False үшін 0 саны, True үшін 1 саны қолданылады. Android-та деректерді(суреттерді) сақтау үшін BLOB типін қолданбаған дұрыс. Қорда суреттерге жолдама көрсеттіп, ал суреттің өзін файлдық жүйеде сақтаған дұрыс.

SQLite-та Mysql-да ең танымал қатар ұзындығын шектейтін varchar(n) типі қолданылмайды. Деректер қорымен жұмыс жасау үшін, жаңа база құрау немесе жаңарту үшін керекті құрал саймандарын жинап, баптап алу керек.

SQLite деректер қоры файл ретінде қарастырылатын болғандықтан, қолданушы файлмен қарым-қатынас жасайды. Сондықтан оқу және жазу операциялары баяу болуы мүмкін. Сол себепті AsyncTask класы көмегі арқылы асинхронды операциялар қолдануға кеңес беріледі

Кесте 1

SQLite-ты сипаттау

Типі

Сипаттау

NULL

Бос орын немесе мән

INTEGER

Бүтін санды мән

REAL

Қалқымалы нүкте мәні

TEXT

UTF-8, UTF-16BE және UTF-16LE кодировкаларындағы қатарлар мен символдар

BLOB

Бинарлы деректер

Бұл жерде датамен жұмыс жасайтын тип жоқ. Қатарлық мәндерді қолдануға болады. Мысалы, 2013-03-28(2013 жылдың 28 наурызы). Дата үшін келешекте 2013-03-27T07:58 форматы ұсынылады. Мұндай жағдайларда күн қосу, айдың басын орнату үшін SQLite-тың кейбір функцияларын қолдануға болады. SQLite сағаттық белдеуді қолдамайтынын есте сақтау керек.

Сонымен қатар boolean типін қолдамайды. False үшін 0 саны, True үшін 1 саны қолданылады. Android-та деректерді(суреттерді) сақтау үшін BLOB типін қолданбаған дұрыс. Қорда суреттерге жолдама көрсеттіп, ал суреттің өзін файлдық жүйеде сақтаған дұрыс.

SQLite-та Mysql-да ең танымал қатар ұзындығын шектейтін varchar(n) типі қолданылмайды. Деректер қорымен жұмыс жасау үшін, жаңа база құрау немесе жаңарту үшін керекті құрал саймандарын жинап, баптап алу керек.

SQLite деректер қоры файл ретінде қарастырылатын болғандықтан, қолданушы файлмен қарым-қатынас жасайды. Сондықтан оқу және жазу операциялары баяу болуы мүмкін. Сол себепті AsyncTask класы көмегі арқылы асинхронды операциялар қолдануға кеңес беріледі.

Сіздің қосымшаңыз деректор қорын құрғанда ол DATA/data/имя_пакета/databases/имя_базы.db. каталогында сақталады. Environment.getDataDirectory() әдісі жолды DATA каталогына қайтарады. Деректор қорымен жұмыс жасаудағы ең басты пакеттер болып android.database және android.database.sqlite табылады. SQLite деректер қоры оны құрайтын қосымшаға ғана қолжетімді. Егер басқа қосымшаға деректер қорынан мәлімет алуға мүмкіндік бергіңіз келсе, контент-провайдерлерді қолдануға болады.

SQLite-пен жұмыс жасауға арналған класстар

Деректор қорымен жұмыс жасау келесі жаттығуларды орындайды:

- деректер қорының құрылуы және ашылуы;

- дестенің құрылуы;

- деректерді енгізуге арналған интерфейс құру(insert);

- сұраныс жасауға арналған интерфейс құру;

- деректер қорының жабылуы;

- сontentValues класы кестеге жаңадан қатар қосу үшін арналады. Осы класстың әрбір сәйкесінше объектілері кестенің бір қатарының мағынасын береді, баған аттарымен және мәндерімен ассоциативті массив ретінде көрініп тұрады.

Cursor - Android-та деректер қорына ұсынысты қайтару Cursor класының объектілерімен жүзеге асырылады. Деректерді шығарып алып және көшірмесін қайтарудың орнына, курсорлар нәтижелі деректерге жіберіледі.

Android кітапханасында SQLiteOpenHelper абстрактілі класы бар. Оның көмегімен деректер қорын құруға, ашуға және жаңартуға болады. Көп жобаларда ең басты класс болып осы табылады. SQLiteOpenHelper-та екі абстрактілі әдіс бар:

- onCreate() – деректер қорын алғаш құрағанда шақырылады;

- onUpgrade() – деректер қорын модификациялағанда шақырылады;

OpenGL ES (OpenGLforEmbeddedSystems) – ішкі жүйемен жұмыс жасауға адаптерленген, OpenGL графикалық бағдарлама интерфейсінің ішкі жиыны.

FreeType – библиотека для работы с битовыми картами, а также для растеризации шрифтов и осуществления операций над ними. Это высококачественный движок для шрифтов и отображения текста.

FreeType – биттік карталармен жұмыс жасау, сонымен қатар әріптерді растеризациялауды және олардың үстіндеоперациялардыжүзеге асыратын кітапхана. Бұл әріптер менмәтінді бейнелеуге арналған жоғары сапалы қозғалтқыш.

LibWebCore – атақты WebKit браузерлі қозғалтқыштың, сонымен бірге Apple Safari және GoogleChrome браузерлерде қолданылатын кітапханалар.

SGL (SkiaGraphicsEngine) – 2D-графикалармен жұмыс жасауға арналған ашық қозғалтқыш. Графикалық кітапханаGoogle өнімі болып табылады және олардыңбасқа бағдарламаларында жиi қолданылады. SSL - аттас крифтографиялық хаттамаларды қолдауға арналған кітапханалар.

Libc – C тілінің стандартты кітапханасы, дәлірек айтсақ жөнге салынған Linux базасының негізінде құрылымдармен жұмыс жасауға арналған оның BSD реализациясы. Bionic атауымен белгілі.

Дәл осы деңгейде орындаулар ортасы- AndroidRuntime орналасқан. Оның негізі ретінде кітапханалардың жиыны мен Dalvik виртуалды машинасы жатады. Кітапханалар Java тілінің ядросының кітапханаларына қол жетімді төмен деңгейлі функционалдықтың үлкен бөлігін қамтамасыз етеді.

Әрбір қосымшалар Android-тің ОЖ-не Dalvik виртуалды машинасының меншікті данасы ретіндеіске қосылады. Сөйтіп, барлық жұмыс істейтін процесстер операциялық жүйеден және өз-өзінен оқшауланған.Тіпті, AndroidRuntime құрылысы да сондай, яғни бағдарламалардың жұмысы қатал түрде виртуалды машина ортасының шеңберінде іске асады. Осының арқасында операциялық жүйенің ядросы оның басқа құрауыштарыныңтарапынан келетін зияннан қорғау жүзеге асырылады.

Сондықтан қателер коды немесе зиянды БЖ Android және оның базасындағы құрылым жұмыс істеген кезде бүлдіре алмайды. Осындай қорғайтын функция, программалық кодты орындаумен қатар, AndroidRuntime құрылымы үшінбір маңызды негізі болып табылады. Деңгейден жоғар, кейде қосымшалардың қаңқасының деңгейі деп аталатын ApplicationFramework орналасқан. Яғни қосымшалар қаңқалары арқылы өңдеушілер деңгейден төмен жататын жүйелердің компоненттерімен берілетін API рұқсатқа алады. Сонымен қатар, фреймворка құрылысы арқасында, кез келген қосымшаларға басқа қосымшалардың қол жетімді жүзеге асырылған мүмкіндіктері беріледі.

Әрбір қосымшалардың негізінде жататын және фреймворка бөліктері болып табылатын сервистер мен жүйелердің жиынына кіретіндер.

Қосымшалардың визуалды компоненттерін құру үшін қолданылатын бай және ұсыныстардың кеңейтілгенн жиыны (Views), мысалы, тізімдер, мәтіндік өрістер, кестелер, батырмалар, тіпті кірістірілген web-браузерлер.

Контент-провайдер (ContentProviders),бір қосымша басқа қосымшалар өз жұмысында қолдануы үшін ашатын деректер басқарушысы.

Қорлардың менеджері (ResourceManager) ресурстарғафункционалдықсыз рұқсаттықамтамасыз етеді(кодсыздар) мысалы, деректер тармағы, кестеге, файлдарға және тағы басқа.

Хабарлау менеджері(NotificationManager) арқасында барлық қолданбалар қолданушыға күй жолағында ескертулер бейнелей алады.

Іс-әрекеттер менеджері(ActivityManager) қолданбалардың тіршілік айналымдарын басқарады және іс-әрекеттермен жұмыс жасау деректерін сақтайды, сонымен қатар олар бойынша навигациялар жүйесін ұсынады.

Орналасқан жері менеджері (LocationManager) қолданбаларға құрылғының ағымдағы географиялық орны туралы жаңартылған деректерді уақытымен алуға мүмкіндік береді.

Осылайша, ApplicationFramework арқасында, Android ОЖ-де қолданбалар өз өкіміне қосалқы функционалды ала алады, осының арқасында қолданбалардың және операциялық жүйеніңкомпоненттерінің бірнеше рет қолдану қағидасын іске асырады. Әрине, қауіпсіздік саясатының шеңберінде.

Жай ғана түсінікті деңгейде атап айтатын болсақ, фреймворк өздері жүзеге асатын кітапханаларға қарағанда өзі үшін жазылған кодты орындайды. Кітапханалар құрамына логикалық жағынан жақын функциялар жиынтығы кіретін болса, фреймворк құрамына әртүрлі функцияналдық пен мақсаты бар кітапханалардың көп саны кіреді.

Android бағдарламалық стегінің жоғары шегінде қолданбалар деңгейі орналасқан (Applications). Осында Android ОЖ-де орнатылған базалық қолданбалар жиыныкіреді. Мысалы, оған браузер, пошталық тұтынушы, SMS жіберуге арналған бағдарлама, карталар, күнтізбе, байланысу менеджері және тағы басқалар кіреді. Интеграцияланған қолданбалардың тізімі Android-тің нұсқасы мен құрылғысының үлгісіне байланыстыөзгере алады. Осы базалық жиынтықтан басқа қолданбалар деңгейіне тұтынушы орналастырған қолданбаларды қоса алғанда Android платформасына негізделген барлық қолданбалар кіреді.

Android-ке негізделген қолданбалар Java тілінде жазылады деп есептеледі, алайдаC/C++ (NativeDevelopmentKit көмегімен), Basic (Simple көмегімен) және басқа тілдерді қолдану арқылы бағдарламаларды әзірлеу мүмкіндігі бар екенін айта кеткен жөн. Сонымен бірге, AppInventor сияқты қолданбалар конструкторының көмегімен жеке бағдарламар құруға болады. Қорытып айтқанда, мүмкіндіктер көп. Android ОЖ-нің құрылысы туралы әзірлеушілер дайындаған жүйенің талдауына арналған презентацияны видеоны көре отырып түсінуге болады.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]