SlideShare a Scribd company logo
Android

Лекция №1 «Введение»
Agenda











Почему Android?
Фрагментация
Структура приложения
Ключевые концепции
Исходный код
Android GUI
Многозадачность
Activity
Разметка
Экраны и ресурсы
2
Почему Android?

•
•
•
•
•
•

Свободная платформа - никакой модерации
Open Handset Aliance
Google
Можно делать все что угодно
Постоянно развивается
Быстро растет

3
Фрагментация

4
Фрагментация - недостатки






Все формы и размеры
Разное качество
исполнения
Более пяти версия
активны в данный момент
Производители делают
свои прошивки
Невозможно
протестировать на всех
целевых устройствах

5
Фрагментация - достоинства
 Охват аудитории
 Девайс на любой вкус

 …
 Profit!

6
Android Source code

7
Многопоточность







UI main thread
ANR
Handler & Looper
Стандартные Java Threads и Runnable
AsyncTasks
8
Структура приложения
 .APK (Android Package)
 Classes.dex

 Manifest
 Resources

9
AndroidManifest.xml

 Xml

 Описание всех компонентов
 Permissions

 …
10
Компоненты
 Activity
 Service

 Content Provider
 Broadcast Receiver

11
Activity
•

Основной компонент

•

Экран с интерфейсом

•

Не обязательно весь
экран

•

Одна activity вызывает
другую

•

Точка входа в
приложение

•

Описывается в
манифесте
12
Service
 Без интерфейса
 Фоновый режим

 Работа с remote
процессами
 Application layers

13
Content Provider
 Новое слово в
мобильной разработке

 Шаринг данных
 Фасад для
хранилищ(БД, Сервер,
файловая система и
проч.)

 Управление данными

14
Broadcast Receiver
 Оповещение
 Системные

 Пользовательские
 Могут создавать
нотификации
 Ресурсоемкие

15
Android GUI
 Однопоточный
 Управляется
событиями
 Построен на
библиотеке
влооженных
компонентов

 MVC

16
Activity
 Life Cycle
 Tasks & Back Stack

 Manifest
 Save instance state

 Intents

17
Activity
Life Cycle


OnCreate(Bundle saveInstanceState)



Получает сохраненное состояние(если оно есть)





Вызывается когда создается activity
Как конструктор

OnResume()




Вызывается перед тем как activity станет видимым пользователю

OnPause()



Здесь все завершающие операции





Вызывается перед тем как у другой activity вызовется onResume()
Не делать долгих операций!

OnStop()




Вызывается, когда activity уже не видима пользователю

onDestroy()


Вызывается перед уничтожением activity
18
Tasks & Back Stack



Из activity можно вызвать другую activity



Можно вызвать activity другого приложения



Task – коллекция activities, которые складываются в стек



Новая activity пушится в стек, а у предыдущей вызывается onStop()



По кнопке back верхняя activity достается из стека и уничтожается, а у activity под ней
вызывается onResume()



Activities в стеке никогда не меняются местами!

19
Tasks & Back Stack
Task со всеми activities
может уйти в background

Так как activities никогда не
меняют своего
положения в стеке,
любая activity может
иметь в стеке несколько инстансов
20
Activity in Manifest

21
Saving activity state

22
Saving instance state
 Если выйти из приложения по кнопке “Home”, или запустить
другую activity, то предыдущая activity остается в памяти,
поэтому когда (если) вы вернетесь в нее она полностью
восстановит свое состояние
 Система может убить activity в back stack
 Пользователь ничего об этом не знает
 onSaveInstanceState(Bundle outState)
 Восстановит только если activity была убита
системой!(кнопка Back не считается)
 Существует реализация по умолчанию
 Вызовется перед onStop()
 Не использовать для хранения данных!
23
Intents







Сообщение
Объект, содержащий описание запрашиваемой операции
Объект, оповещающий о произошедшем событии
Запуск activity, service
Бывают явные и неявные
Обычно содержит:







Название компонента, который должен его
обработать(com.example.project.app.FreneticActivity)
Action – строка, описывающая действие, которое должно произойти или
произошло(Receivers)
Есть предопределенные и пользовательские actions
Data – URI, сильно зависит от action
Category – информация, описывающая вид компонента, который должен обработать
intent(CATEGORY_LAUNCHER)
Extras – самые разнообразные данные в виде Key-value pairs
24
Intents
Явные(Explicit) интенты:



Адресуются конкретному
компоненту(с помощью
component name)
Обычно используется для
запуска внутренних
компонентов

Неявные(Implicit) интенты:




Не имеют конкретного адресата
Обычно используются для для
запуска компонентов сторонних
приложений
Система находит наиболее
подходящие компоненты(или
несколько)

25
Intent Filters
 Объявляются в манифесте

 Intent должен пройти три теста, чтобы android отдал
его компоненту:
 Action test
 Category test
 Data test

 Если один из тестов не пройдет – компонент не получит
Intent
26
Разметка
 Определяет порядок
расположения
элементов интерфейса
 Обычно создается с
помощью xml
 Разделение
представления и логики
 Большое количество
layouts в библиотеке
android

27
Разметка

28
LinearLayout

29
Gravity
 android:gravity – расположение контента внутри
контейнера

 android:layout_gravity – расположение
относительно родителя

30
Layout Weight
 Параметр android:layout_weight позволяет
распределять пространство между компонентами в
долевом отношении
 Если используются вес, то соответствующее измерение
компонента должно равняться 0
 space assign to child = (child individual weight) / (sum
of weight of every child in Linear Layout)
 По умолчанию вес = 0, это означает, что элемент займет
минимум места, которого потребует контент
 Не использовать weight во вложенных linearLayout!

31
Multiple screens
 Огромное количество
экранов с разными
размерами, ориентацией,
разрешениями и проч.
 Android предоставляет
методы для удобной
организации ресурсов

32
Multiple screens
Основные понятия
 Размер экрана(физический размер)
 Screen density(dpi - точек на дюйм) – low, medium, high, extra high
 Ориентация(портрет, ландшафт)

 Разрешение(не работаем с разрешением)
 Density-independent pixel(dp) – виртуальный пиксель
 1 dp = 1px на 160dpi экране – medium экран
 px = dp * (dpi / 160) – например на экране 240dpi 1dp=1.5px
 Всегда использовать dp, и никогда px

33
Multiple screens
Density independence

34
Multiple screens
Правила
 Все только в dp
 Разные layout для разных размеров экранов(small, normal,
large, xlarge)

 Разные изображения для экранов с разной плотностью
 Использовать квалификаторы
 http://developer.android.com/guide/practices/screens_support
.html
 http://developer.android.com/guide/topics/resources/providin
g-resources.html
35
Спасибо за внимание!

More Related Content

Viewers also liked

HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1Technopark
 
Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5Technopark
 
Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Technopark
 
Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Technopark
 
Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2Technopark
 
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
Technopark
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Technopark
 
Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6Technopark
 
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Technopark
 
Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7Technopark
 
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
Бизнес весна 2014 лекция 4
Бизнес весна 2014 лекция 4Бизнес весна 2014 лекция 4
Бизнес весна 2014 лекция 4Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
 

Viewers also liked (20)

HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5Управление продуктом осень 2013 лекция 5
Управление продуктом осень 2013 лекция 5
 
Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1Java осень 2013 лекция 1-1
Java осень 2013 лекция 1-1
 
Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2Тестирование весна 2014 смешанное занятие 2
Тестирование весна 2014 смешанное занятие 2
 
Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2Разработка веб-сервисов осень 2013 лекция 1 2
Разработка веб-сервисов осень 2013 лекция 1 2
 
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2Алгоритмы и структуры данных весна 2014 лекция 2
Алгоритмы и структуры данных весна 2014 лекция 2
 
Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6Бизнес весна 2014 лекция 6
Бизнес весна 2014 лекция 6
 
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3
 
Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7Проектирование интерфейсов весна 2014 занятие 7
Проектирование интерфейсов весна 2014 занятие 7
 
Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3Тестирование весна 2014 смешанное занятие 3
Тестирование весна 2014 смешанное занятие 3
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
Бизнес весна 2014 лекция 4
Бизнес весна 2014 лекция 4Бизнес весна 2014 лекция 4
Бизнес весна 2014 лекция 4
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 

Similar to Android осень 2013 лекция 1

Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
Sergey Borisov
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)
Эльвина Сакаева
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
Technopark
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)Антон Звонов
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
Noveo
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3
Empatika
 
Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
Empatika
 
ООП. Класс. Инкапсуляция
ООП. Класс. ИнкапсуляцияООП. Класс. Инкапсуляция
ООП. Класс. Инкапсуляция
Olesia Nikitiuk
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
Andrii Dzynia
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
Pavel Tsukanov
 
Сидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDDСидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDD
Stanislav Sidristy
 
VAMR ACADEMY Первое занятие
VAMR ACADEMY Первое занятиеVAMR ACADEMY Первое занятие
VAMR ACADEMY Первое занятие
mixARConference
 
Appium для народа
Appium для народаAppium для народа
Appium для народа
SQALab
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
Леонид Ставила
 
Introduction into Test Driven Development
Introduction into Test Driven DevelopmentIntroduction into Test Driven Development
Introduction into Test Driven DevelopmentIvan Dyachenko
 
Plugin for plugin, or extending android new build system
Plugin for plugin, or extending android new build systemPlugin for plugin, or extending android new build system
Plugin for plugin, or extending android new build system
Anton Rutkevich
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
GlobalLogic Ukraine
 

Similar to Android осень 2013 лекция 1 (20)

Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3
 
Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
 
ООП. Класс. Инкапсуляция
ООП. Класс. ИнкапсуляцияООП. Класс. Инкапсуляция
ООП. Класс. Инкапсуляция
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
Сидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDDСидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDD
 
VAMR ACADEMY Первое занятие
VAMR ACADEMY Первое занятиеVAMR ACADEMY Первое занятие
VAMR ACADEMY Первое занятие
 
Views обзор
Views обзорViews обзор
Views обзор
 
Appium для народа
Appium для народаAppium для народа
Appium для народа
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Introduction into Test Driven Development
Introduction into Test Driven DevelopmentIntroduction into Test Driven Development
Introduction into Test Driven Development
 
Plugin for plugin, or extending android new build system
Plugin for plugin, or extending android new build systemPlugin for plugin, or extending android new build system
Plugin for plugin, or extending android new build system
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
Technopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
Technopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
Technopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 

Android осень 2013 лекция 1

  • 2. Agenda           Почему Android? Фрагментация Структура приложения Ключевые концепции Исходный код Android GUI Многозадачность Activity Разметка Экраны и ресурсы 2
  • 3. Почему Android? • • • • • • Свободная платформа - никакой модерации Open Handset Aliance Google Можно делать все что угодно Постоянно развивается Быстро растет 3
  • 5. Фрагментация - недостатки      Все формы и размеры Разное качество исполнения Более пяти версия активны в данный момент Производители делают свои прошивки Невозможно протестировать на всех целевых устройствах 5
  • 6. Фрагментация - достоинства  Охват аудитории  Девайс на любой вкус  …  Profit! 6
  • 8. Многопоточность      UI main thread ANR Handler & Looper Стандартные Java Threads и Runnable AsyncTasks 8
  • 9. Структура приложения  .APK (Android Package)  Classes.dex  Manifest  Resources 9
  • 10. AndroidManifest.xml  Xml  Описание всех компонентов  Permissions  … 10
  • 11. Компоненты  Activity  Service  Content Provider  Broadcast Receiver 11
  • 12. Activity • Основной компонент • Экран с интерфейсом • Не обязательно весь экран • Одна activity вызывает другую • Точка входа в приложение • Описывается в манифесте 12
  • 13. Service  Без интерфейса  Фоновый режим  Работа с remote процессами  Application layers 13
  • 14. Content Provider  Новое слово в мобильной разработке  Шаринг данных  Фасад для хранилищ(БД, Сервер, файловая система и проч.)  Управление данными 14
  • 15. Broadcast Receiver  Оповещение  Системные  Пользовательские  Могут создавать нотификации  Ресурсоемкие 15
  • 16. Android GUI  Однопоточный  Управляется событиями  Построен на библиотеке влооженных компонентов  MVC 16
  • 17. Activity  Life Cycle  Tasks & Back Stack  Manifest  Save instance state  Intents 17
  • 18. Activity Life Cycle  OnCreate(Bundle saveInstanceState)   Получает сохраненное состояние(если оно есть)   Вызывается когда создается activity Как конструктор OnResume()   Вызывается перед тем как activity станет видимым пользователю OnPause()   Здесь все завершающие операции   Вызывается перед тем как у другой activity вызовется onResume() Не делать долгих операций! OnStop()   Вызывается, когда activity уже не видима пользователю onDestroy()  Вызывается перед уничтожением activity 18
  • 19. Tasks & Back Stack  Из activity можно вызвать другую activity  Можно вызвать activity другого приложения  Task – коллекция activities, которые складываются в стек  Новая activity пушится в стек, а у предыдущей вызывается onStop()  По кнопке back верхняя activity достается из стека и уничтожается, а у activity под ней вызывается onResume()  Activities в стеке никогда не меняются местами! 19
  • 20. Tasks & Back Stack Task со всеми activities может уйти в background Так как activities никогда не меняют своего положения в стеке, любая activity может иметь в стеке несколько инстансов 20
  • 23. Saving instance state  Если выйти из приложения по кнопке “Home”, или запустить другую activity, то предыдущая activity остается в памяти, поэтому когда (если) вы вернетесь в нее она полностью восстановит свое состояние  Система может убить activity в back stack  Пользователь ничего об этом не знает  onSaveInstanceState(Bundle outState)  Восстановит только если activity была убита системой!(кнопка Back не считается)  Существует реализация по умолчанию  Вызовется перед onStop()  Не использовать для хранения данных! 23
  • 24. Intents       Сообщение Объект, содержащий описание запрашиваемой операции Объект, оповещающий о произошедшем событии Запуск activity, service Бывают явные и неявные Обычно содержит:       Название компонента, который должен его обработать(com.example.project.app.FreneticActivity) Action – строка, описывающая действие, которое должно произойти или произошло(Receivers) Есть предопределенные и пользовательские actions Data – URI, сильно зависит от action Category – информация, описывающая вид компонента, который должен обработать intent(CATEGORY_LAUNCHER) Extras – самые разнообразные данные в виде Key-value pairs 24
  • 25. Intents Явные(Explicit) интенты:   Адресуются конкретному компоненту(с помощью component name) Обычно используется для запуска внутренних компонентов Неявные(Implicit) интенты:    Не имеют конкретного адресата Обычно используются для для запуска компонентов сторонних приложений Система находит наиболее подходящие компоненты(или несколько) 25
  • 26. Intent Filters  Объявляются в манифесте  Intent должен пройти три теста, чтобы android отдал его компоненту:  Action test  Category test  Data test  Если один из тестов не пройдет – компонент не получит Intent 26
  • 27. Разметка  Определяет порядок расположения элементов интерфейса  Обычно создается с помощью xml  Разделение представления и логики  Большое количество layouts в библиотеке android 27
  • 30. Gravity  android:gravity – расположение контента внутри контейнера  android:layout_gravity – расположение относительно родителя 30
  • 31. Layout Weight  Параметр android:layout_weight позволяет распределять пространство между компонентами в долевом отношении  Если используются вес, то соответствующее измерение компонента должно равняться 0  space assign to child = (child individual weight) / (sum of weight of every child in Linear Layout)  По умолчанию вес = 0, это означает, что элемент займет минимум места, которого потребует контент  Не использовать weight во вложенных linearLayout! 31
  • 32. Multiple screens  Огромное количество экранов с разными размерами, ориентацией, разрешениями и проч.  Android предоставляет методы для удобной организации ресурсов 32
  • 33. Multiple screens Основные понятия  Размер экрана(физический размер)  Screen density(dpi - точек на дюйм) – low, medium, high, extra high  Ориентация(портрет, ландшафт)  Разрешение(не работаем с разрешением)  Density-independent pixel(dp) – виртуальный пиксель  1 dp = 1px на 160dpi экране – medium экран  px = dp * (dpi / 160) – например на экране 240dpi 1dp=1.5px  Всегда использовать dp, и никогда px 33
  • 35. Multiple screens Правила  Все только в dp  Разные layout для разных размеров экранов(small, normal, large, xlarge)  Разные изображения для экранов с разной плотностью  Использовать квалификаторы  http://developer.android.com/guide/practices/screens_support .html  http://developer.android.com/guide/topics/resources/providin g-resources.html 35