Парменов О.И.

Таврический национальный университет им.В.И.Вернадского, Симферополь

Лучинкин А.В.

разработчик Android-приложений, Симферополь

 

Оценка эффективности использования визуальных технологий Fragment и Action Bar

последних версий ОС Android

Последние годы ознаменовались повсеместным широкомасштабным распространением устройств, работающих под управлением мобильных операционных систем. Мобильные ОС управляют мини-компьютерами, смартфонами и коммуникаторами, электронными книгами, стиральными машинками, наручными часами, цифровыми проигрывателями и т.п.

2/3 таких устройств работают под управлением Android - наиболее динамично меняющейся операционной системой. Так, только за период 2011-2013 годов она претерпела более шести существенных переработок и изменений, были выпущены две ее абсолютно новые версии.

В октябре 2013 вышла версия Android 4.4 - KitKat.  Ключевым является ее реализация на Java 1.7 (все предыдущие версии базируются на Java 1.6). В ней добавлено множество классов для работы с «внешними» файлами типа PDF или RSS, JSON. Все это дало ОС серьезное функциональное преимущество на рынке мобильных устройств и уже составило конкуренцию стационарным компьютерам во многих приложениях, о чем свидетельствует изменение рыночной ситуации и сокращению рынка ноутбуков в 2013 году на 22-44% в сравнении с 2012 годом.

Разноплановость графического интерфейса и подходов в написании приложений привела к необходимости создания унифицированной технологии (ею стало использование Activity). Начиная с версии Android 3.0 реализованы две графических технологии - Fragments и Action Bar (следует отметить, что их полноценная реализация была выполнена в версии 4.0 Ice Cream Sandwich, и в результате имплементирования библиотеки Android support library v4, благодаря обратной совместимости API 4.0 c API 3.0, они стали доступны в более ранних версиях с частичной поддержкой функционала).

Технология фрагментов - Fragments - является симбиозом определенного поведения элементов, их графического отображения и порождающего процесса в целом.  Фактически, фрагмент - это подмодуль Activity, хотя он не имеет многих важных атрибутов: определенные функции могут быть запущены только с параметром Context от Activity, но не от Fragment; каждый фрагмент обладает жизненным циклом, схожим с жизненным циклом Activity, но поддерживает многопоточность; можно изолировать процесс фрагмента от внешних воздействий.

Action Bar – деталь оконного интерфейса, показывающая текущую позицию в пользовательской структуре приложения,- реализует частичный функционал и обеспечивает навигацию по приложению.

Главным преимуществом 4-ой версии является поддержка нескольких фоновых процессов и обеспечение функционирования изолированных пользовательских интерфейсов, что дало возможность конструировать приложения с автономным графическим интерфейсом. Для оценки эффективности упомянутых выше визуальных технологий был разработан программный комплекс, состоящий из двух приложений, основанный на версиях ОС Android 3-ей и 4-ой версий. В качестве среды программирования была использована Eclipse ADT 22.2.1, а языка программирования - Java 1.6.

Для оценки изменений размера кода был взят код, отвечающий только за инициализацию и поведение функционального модуля, а также общий объем приложения. Установлено, что модуль выбора элемента сократился всего на 11%, однако весь функциональный код был перенесен из класса Activity в класс ListFragment, что позволяет оставить в главном потоке только инициализацию компонентов приложения и повысить масштабируемость. Модуль детальной информации сократился на 56% за счет прямой передачи данных между классами (без использования полей класса Intent) и запуска модуля не как отдельного главного потока.

Было выполнено тестирование производительности в двух режимах: на устройстве Google nexus 7 с версией ОС Android 4.4, а также с использованием эмулятора Android AVD версий 3.0 и 4.0.

Тестируемый модуль

Android 3.0

(c)

Android 4.0

(c)

Прирост производительности (%)

Устр.

Эмул.

Устр.

Эмул.

Устр.

Эмул.

Модуль отображения списка элемента

0,273

3,985

0,256

2,695

6,22

32,37

Модуль детальной информации об элементе

1,400

6,182

1,256

3,635

10,29

41,2

Модуль Google Maps

3,251

6,645

3,147

4,539

3,2

34

Все приложение

4,971

16,931

4,573

11,452

8%

32,36

 

Преимущества реализации на ОС версии 4.0 – это сокращение числа окон-процессов приложения с обеспечением параллельности работы элементов графического интерфейса и использование дополнительной навигации. При этом, вызов методов так же становится изолированным от других процессов.

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

Отрицательным результатом, обнаруженным в ходе тестирования, является выявленная двойная обработка события нажатия на элемент списка. Вся логика работы списка заключена в классе ListFragment. Обработчик события onListItemClick() тоже функционирует внутри фрагмента, но при нажатии на элемент его позиция должна быть доступна в классе MainActivity для осуществления связи между фрагментами. Решением этой проблемы является дополнительная имплементация класса Listener в класс MainActivity, что приводит к увеличению событий и кода программы при тех же управляющих воздействиях. Таким образом, разработчик прибегнул к вынужденному созданию отдельных классов OnItemClickEventsArgs и OnItemClickListener для передачи стандартного поля int в класс  MainActivity, что является тратой ресурсов.

 

Литература:

 

1.                 Малютин А. Android: используем Fragments для оптимизации интерфейса [Электронный ресурс] //28 января 2013 – Режим доступа: http://habrahabr.ru/post/167315/

2.                 Семакова А. Введение в разработку приложений для смартфонов на ОС Android [Электронный ресурс] //24.10.2012 – Режим доступа: http://www.intuit.ru/studies/courses/4462/988/lecture/14988?page=3