ЕФЕКТИВНЕ CI ВИКОРИСТАННЯ JAVA ДЛЯ ANDROID

&nbsp

Були описані принципи роботи з ідіомами Java Ми докладніше розглянемо ідеї, і поговоримо про ідіомах Java стосовно платформі Android

Фреймворками ANDROID

Двадцять років тому типове компютерне додаток запускалось з командного рядка, а весь обсяг його коду будувався на унікальній програмної логіці Але в наші дні додатки вимагають дуже складної підтримки для роботи з інтерактивними користувача інтерфейсами, управління мережею, обробки викликів і т д Логіка підтримки повинна бути однаковою для всіх додатків Під фреймворці Android для вирішення цих проблем пропонується підхід, що став практично загальноприйнятим, особливо в умовах, коли оточення додатків стають все складніше Отже, говорять про скелетном додатку (skeleton application), або шаблоні додатки (application template)

Коли ми створювали просте скелетное додаток, за допомогою якого перевіряли установку нашого комплекту ПЗ для програмування під Android, додаток вийшло повноцінним і його цілком можна запускати Ця програма здатна виконувати мережеві запити, відображати висновок на екрані і обробляти екранний введення Цей додаток також могло обробляти вхідні дзвінки, і хоча користуватися такою функцією ми не збиралися, програма також могла перевіряти ваше місце розташування У програму ще не передано ніяка корисна функціональність (логіка), з якою програма могла б працювати Це і є скелетное додаток

При роботі з фреймворком Android завдання розробника полягає не стільки в тому, щоб зробити повнофункціональну програму, скільки в тому, щоб реалізувати потрібні поведінки, а потім вбудувати їх в скелетное додаток в правильно підібраних точках розширення Девіз МасАрр, одного з перших фрейм-ворк, де застосовувалися скелетні додатки, такий: «Не викликай нас, ми самі викличемо тебе» Отже, якщо створення додатків для Android принципово зводиться до розуміння того, як потрібно розширювати фреймворк, доцільно розглянути деякі універсальні перевірені методи, які допомагають робити такі розширення

Бібліотеки Android

Android додає для роботи кілька нових пакетів, які, разом з кількома деревами пакетів зі складу традиційного безлічі пакетів Java (J2SE), утворюють інтерфейс програмування додатків для середовища часу виконання Android Зробимо відступ і розглянемо, які компоненти входять до складу цього комбінованого API

android і dalvik

У цих деревах пакетів міститься вся Android-специфічна частина середовища часу виконання Android Дані бібліотеки розглядаються протягом більшої частини нашої книги, оскільки в їх числі – бібліотеки для роботи з графічним інтерфейсом користувача Android і роботи з текстом Ці бібліотеки називаються android graphi cs, android view, android widget і android text До даної категорії відносяться також бібліотеки фреймворка додатків – android арр, androidcontent і androiddatabase У них, в свою чергу, містяться інші ключові фреймворки, орієнтовані на мобільне програмування, в Зокрема androidtelephony і androidwebkit Досвідчений програміст, що працює з Android, ймовірно, знайомий як мінімум з кількома першими пакетами з перерахованих тут Щоб ознайомитися з документацією Android в контексті дерева пакетів, можете почати з «верхівки» документації з розробки для Android – http:// developerandroidcom / reference / packageshtml

Java

У цьому пакеті міститься реалізація основних бібліотек середовища часу виконання Java У пакеті javalang перебуває визначення класу Object, який є базовим для всіх обєктів Java У Java також є пакет uti 1, в якому знаходиться фреймворк колекцій Java: Array, Li sts, Map, Set і Iterator, а також їх реалізації У бібліотеці колекцій Java надається добре сконструйований набір структур даних для мови Java – завдяки цим структурам ви рятуєтеся від необхідності писати власні списки з посиланнями

Як було зазначено, в пакеті uti 1 містяться колекції з двох різних поколінь Деякі походять з Java 11, а інші засновані на більш нової, переглянутої парадигмі колекцій Колекції з 11 (Наприклад, Vector і Hashtable) повністю синхронізовані, їх інтерфейси відрізняються меншим однаковістю Більш нові версії (наприклад, HashMap і ArrayLi st) НЕ сіхронізі-рова, але мають кращу взаємну сумісність і їх слід використовувати в першу чергу

Для підтримки сумісності в рамках мови Java бібліотеки Android також містять реалізації деяких застарілих класів, користуватися якими взагалі не слід Наприклад, під фреймворці Collections є клас Di ctionary, який абсолютно застарів і не повинен застосовуватися Інтерфейс Enumeration замінений на Iterator, a TimerTask – на ScheduledThreadPool Executor з фреймворка багатопоточних додатків (Concurrency) У довідковій документації по Android ці застарілі типи описані і ідентифікуються дуже добре

У Java також містяться базові типи для деяких інших широко застосовуваних обєктів, зокрема Currency, Date, TimeZone і UUID, а також базові фрейм-ворк введення-виведення, роботи в мережі, многопоточного виконання і забезпечення безпеки

Пакети awt і rmi відсутні в ієрархічній структурі тієї версії Java, яка використовується з Android Пакет awt замінюється бібліотеками графічного інтерфейсу користувача Android Відсутній єдиний аналог для системи видалених повідомлень (remote messaging), але всередині системи діють ServiceProviders, що використовують Parcel ables Цей механізм описаний в розділі «Серіалізация» даної глави Він забезпечує функціонал, схожий зі службою видалених повідомлень

javax

Цей пакет дуже нагадує пакет Java У ньому містяться елементи мови Java, які офіційно вважаються опциональнимі Тут ви знайдете бібліотеки, поведінки з яких повністю описані, але вони не обовязкові для повноцінної реалізації мови Java Оскільки до складу середовища часу виконання Android не входять деякі компоненти, які є обовязковими, у реалізації javax для Android існують характерні риси, необхідні для того, щоб пакети Android максимально нагадували пакети Java В обох деревах пакетів містяться реалізації бібліотек, описаних як компоненти мови Java

Найважливіший елемент в javax – це фреймворк XML Там знаходяться інструменти синтаксичного розбору SAX і DOM, реалізація XPath і XSLT

Крім того, в пакеті javax містяться важливі розширення системи безпеки, а також АРІ для OpenGL Досвідчений програміст, що працює з Java, помітить, що в реалізації пакетів javax, застосовуваної в середовищі часу виконання Android, не вистачає кількох важливих розділів Зокрема, тих, які зайняті роботою з призначеним для користувача інтерфейсом і медійними компонентами Відсутні, наприклад, розділи javax swing, javax sound та інші, подібні їм Їх місце займають інші пакети, специфічні для Android

orgapachehttp

У цьому дереві пакетів міститься стандартна реалізація Apache для клієнта і сервера HTTP – HttpCore У даному пакеті знаходиться все необхідне для обміну інформацією по протоколу HTTP, в тому числі класи, представляють повідомлення, заголовки, зєднання, запити і відгуки

Проект Apache HttpCore розташований в Інтернеті за адресою http://hcapacheorg/ httpcomponents-core/indexhtml

orgw3cdom, orgxmlsax, orgxmlpull, and orgjson

Ці пакети є визначеннями загальнодоступних АРІ для деяких широко використовуваних форматів даних: XML (http://wwww3org/standards/xml), XML Pull (http://wwwxmlpullorg/indexshtml) і JSON ( http://wwwjsonorg)

Розширення Android

Отже, тепер у вас є базова колійна карта для переміщення по фреймворку Android, і виникає природне запитання: «Як скористатися всім цим, щоб написати власний додаток» Як розширити той фреймворк, який ми тільки що описали як дуже складний, але «неживий» сам по собі, і зробити на його основі яке-небудь корисне додаток

Логічно, що на це питання є кілька відповідей Бібліотеки Android організовані так, що вони дозволяють процесам отримувати доступ до фреймворку на різних його рівнях

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*