SlideShare a Scribd company logo
Введение в Android-
разработку
Android
Александр Вайцеховский
Особенности платформы
Достоинства
Широкие возможности платформы
Открытость
Интеграция с другими приложениями
Переиспользование библиотек
Java
Недостатки
Разное железо
Разные экраны
Разные производители устройств
Проблемы с памятью
Архитектура Android*
*Kitkat (Android 4.4 Api 19) и меньше
Архитектура Android*
*Lollipop (Andriod 5.0 Api 20) и старше
ART vs Dalvik
Особенности приложения
Приложение ↔ название пакета "com.noveogroup.application"
Приложeние ↔ Пользователь Linux
1 видимое приложение (2, начиная с Android N)
Жизненный цикл приложения ≠ жизненный цикл процесса
Управление жизненным циклом приложения и все View в UIThread
Application Framework
Application Framework
Это фреймворк!
построен на шаблоне Model-View-ViewModel (MVVM)
Строительные блоки
AndroidManifest.xml
Имя java-пакета (id приложения)
Объевление компонент:
Activity
Service
BroadcastReceiver
ContentProvider
Описание возможностей компоненты:
IntentFilter
Классы, реализующие их
Иконки, названия :)
Перечисление разрешений
Ограничение уровня Android API.
Мета-данные
И другое...
Структура проекта (IDEA)
1. специфика Intellij IDEA
2. Исходники
3. Activity
4. Ресурсы
5. Разметка Activity
6. Ресурсы значений (тут строки)
7. Ресурсы изображений (тут
картинки)
8. Генерируемые классы
9. R.java - контейнер id ресурсов
Структура проекта (IDEA)
Вместо bin/gen - build
Исходники и ресурсы вместе
Конфигурационные файлы Gradle даже
параметры из Manifest
Библиотеки можно как подкладывать
руками
...а можно подгружать автоматически
Ресурсы
Типы ресурсов
drawable
image
.png, .jpg, .gif
9patch
.9.png
.xml
vector, shape, selector
layout
anim
values:
строки, числа, цвета
xml
raw
Селекторы ресурсов
Ориентация
land, port
Плотность точек
ldpi, mdpi, hdpi, xhdpi,
nodpi
Размер экрана
small, normal, large, xlarge
sw720dp, sw600dp, ...
Версия Android
v3, ..., v15
Язык
en, fr, ru, ...
Ресурсы R.java
1 package com.noveogroup.example.app;
2
3 public final class R {
4 public R() {
5
6 public static final class string {
7 public static final int app_name = 2130968576;
8 public static final int hello_world = 2130968577;
9 }
10
11 public static final class layout {
12 public static final int activity_main = 2130903040;
13 }
14
15 public static final class drawable {
16 public static final int ic_launcher = 2130837504;
17 }
18
19 public static final class attr {
20 }
21 }
22 }
Строковые ресурсы
res/values/strings.xml
1 <string name="test">String</string>
2 <string name="test_arg">String with integer argument: %1$d</string>
res/values-ru/strings.xml
1 <string name="test">Строка</string>
2 <string name="test_arg">Cтрока с целочисленным аргументом: %1$d</string>
src/com/noveogroup/example/app/MainActivity.java
1 TextView simpleView = (TextView) findViewById(R.id.text_view_simple);
2 simpleView.setText(getString(R.string.test));
3
4 TextView argsView = (TextView) findViewByid(R.id.text_view_args)
5 argsView.setText(getString(R.string.test_arg, 50));
Жизненный цикл Activity
Восстановление Activity
Восстановление Activity
1 public class MainActivity extends Activity {
2 @Override
3 void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState);
5 }
6
7 @Override
8 void onRestoreInstanceState(Bundle savedInstanceState) {
9 super.onRestoreInstanceState(savedInstanceState);
10 }
11
12 @Override
13 void onSaveInstanceState(Bundle outState) {
14 super.onSaveInstanceState(outState);
15 }
16
17 @Override
18 void onDestroy() {
19 super.onDestroy();
20 }
21 }
Fragment
Доступны с API 11 (Android 3.0)
Портированы для старых версий в Android Support Library
Позволяют объединиться несколько экранов в одном.
Существуют только как часть Activity.
Fragment
Введение в Android-разработку (Lecture 06 – basics)
Android L
API 20 - 22
Material Design
RecyclerView на замену ListView/GridView
ART Compiler
Улучшение уведомлений
Многое для SmartWatch, TV и Auto
Введение в Android-разработку (Lecture 06 – basics)
Android M
API 23
Режиме Doze
нельзя в сеть
нельзя синхроинизироваться
работает с прерываниями
Безопасность
Runtime Permissions: опасные и не очень
Ограничение доступа к MAC-адресу
Apache HTTP Client
Много новых ViewGroup
App Links
* Приложения для старого API нормально запускаются
Введение в Android-разработку (Lecture 06 – basics)
Android N
API 24
Многооконный режим
Масштабирование экрана
Режиме Doze
Нельзя: будить телефон, GPS, искать Wi-Fi
Уведомления:
Можно: обновлять, группировать, менять view
RemoteInput
Java 8 + Jack compiler
Закрыт доступ через NDK к закрытым API системы
* Приложения для старого API не работают, если экран масштабирован
Полезные ссылки
Документация Android
Android Developers Blog
Учебник по Android
Android L Changes
Android M Changes
Android N Changes

More Related Content

What's hot (20)

PPTX
Основы и нюансы параллельного тестрования
bearoff
 
PPTX
ППП (Пишем Плагины Правильно)
Anatoly Yumashev
 
PPTX
Java осень 2012 лекция 5
Technopark
 
PPTX
Konstantin slisenko - Spring Framework
beloslab
 
PDF
Тестируй это / Виктор Русакович (GP Solutions)
Ontico
 
PPTX
End-2-End UI автоматизация в мобильном приложении. Наша реализация
SQALab
 
PDF
Разработка Enterprise-приложения на основе Spring Framework
CUSTIS
 
PPTX
Особенности разработки API / Всеволод Шмыров (Яндекс)
Ontico
 
PDF
Автоматизация UI тестирования под Windows и Windows Phone
CodeFest
 
PDF
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
PPT
Spring in java
Asya Dudnik
 
PPT
Инструментация среды исполнения в арсенале тестировщика
SQALab
 
PDF
Многопоточное программирование на C#, путевые заметки
DotNetConf
 
PPTX
системы сборок проектов
Romero78
 
KEY
Testing RIA with Selenium
Sergey Shvets
 
PPTX
автоматизация тестирования с помощью Selenium
vyacheslavmaslov
 
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
PPTX
Автоматизация и Selenium IDE
ISsoft
 
PPTX
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
tfmailru
 
PPTX
Человекопонятные отчёты
bearoff
 
Основы и нюансы параллельного тестрования
bearoff
 
ППП (Пишем Плагины Правильно)
Anatoly Yumashev
 
Java осень 2012 лекция 5
Technopark
 
Konstantin slisenko - Spring Framework
beloslab
 
Тестируй это / Виктор Русакович (GP Solutions)
Ontico
 
End-2-End UI автоматизация в мобильном приложении. Наша реализация
SQALab
 
Разработка Enterprise-приложения на основе Spring Framework
CUSTIS
 
Особенности разработки API / Всеволод Шмыров (Яндекс)
Ontico
 
Автоматизация UI тестирования под Windows и Windows Phone
CodeFest
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Ontico
 
Spring in java
Asya Dudnik
 
Инструментация среды исполнения в арсенале тестировщика
SQALab
 
Многопоточное программирование на C#, путевые заметки
DotNetConf
 
системы сборок проектов
Romero78
 
Testing RIA with Selenium
Sergey Shvets
 
автоматизация тестирования с помощью Selenium
vyacheslavmaslov
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
Автоматизация и Selenium IDE
ISsoft
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
tfmailru
 
Человекопонятные отчёты
bearoff
 

Viewers also liked (20)

PDF
Seminar: Эффективное использование среды разработки и компилятора C++
Denis Vasilyev
 
PDF
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Noveo
 
PDF
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Denis Vasilyev
 
PDF
Android - 05 - Android basics
Noveo
 
PPTX
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
Антон Звонов
 
PDF
Thread
Alexander Rusin
 
PDF
Работа с соцсетями (Lecture 19 – social)
Noveo
 
PDF
Lec 10
Alexander Rusin
 
PDF
Lec 12
Alexander Rusin
 
PDF
Toolbar (Lecture 16 – toolbar)
Noveo
 
PDF
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Denis Vasilyev
 
PPTX
Семантика текста (HTML5 тема 04 - семантика текста)
Noveo
 
PPTX
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Noveo
 
PDF
Database (Lecture 14 – database)
Noveo
 
PDF
Lec 13
Alexander Rusin
 
PDF
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Denis Vasilyev
 
PDF
Работа с графической подсистемой (Lecture 10 – Graphics)
Noveo
 
PDF
Android - 10 - Graphics
Noveo
 
PDF
Fragments (Lecture 09 – Fragments)
Noveo
 
Seminar: Эффективное использование среды разработки и компилятора C++
Denis Vasilyev
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Noveo
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Denis Vasilyev
 
Android - 05 - Android basics
Noveo
 
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
Антон Звонов
 
Работа с соцсетями (Lecture 19 – social)
Noveo
 
Toolbar (Lecture 16 – toolbar)
Noveo
 
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Denis Vasilyev
 
Семантика текста (HTML5 тема 04 - семантика текста)
Noveo
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Noveo
 
Database (Lecture 14 – database)
Noveo
 
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Denis Vasilyev
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Noveo
 
Android - 10 - Graphics
Noveo
 
Fragments (Lecture 09 – Fragments)
Noveo
 
Ad

Similar to Введение в Android-разработку (Lecture 06 – basics) (20)

PPTX
iOS and Android Mobile Test Automation
Andrii Dzynia
 
PDF
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Sergey Platonov
 
PDF
Android: Как создать свое первое приложение?
Kuban Dzhakipov
 
PDF
Mobile automation uamobile
UA Mobile
 
PPTX
Online TechTalk “Flutter Mobile Development”
GlobalLogic Ukraine
 
PPTX
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Softengi
 
PDF
Scala for android
Alexander Rusin
 
PPTX
Елена Жукова "Жизнь вне JavaScript"
Fwdays
 
PPTX
Unity Android и Java. Демо сессия
DevGAMM Conference
 
PDF
Java осень 2014 занятие 5
Technopark
 
PDF
Стратегии масштабирования [NoBugs WTF PRO уровень]
NoBugs
 
PDF
Java 9: what is there beyond modularization
Ivan Krylov
 
PPTX
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
PPTX
Android.глазами хакера
Neuron Hackspace
 
PPTX
Антон Валюх - Использование паттерна Mvvm в android
DataArt
 
PPTX
Java весна 2013 лекция 9
Technopark
 
PPT
The Best Portlet
Alexey Zavizionov
 
PPT
Лекция Android
Pavel Tsukanov
 
PDF
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Stfalcon Meetups
 
PPTX
Sqadays 8-barancev
Alexei Lupan
 
iOS and Android Mobile Test Automation
Andrii Dzynia
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Sergey Platonov
 
Android: Как создать свое первое приложение?
Kuban Dzhakipov
 
Mobile automation uamobile
UA Mobile
 
Online TechTalk “Flutter Mobile Development”
GlobalLogic Ukraine
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Softengi
 
Scala for android
Alexander Rusin
 
Елена Жукова "Жизнь вне JavaScript"
Fwdays
 
Unity Android и Java. Демо сессия
DevGAMM Conference
 
Java осень 2014 занятие 5
Technopark
 
Стратегии масштабирования [NoBugs WTF PRO уровень]
NoBugs
 
Java 9: what is there beyond modularization
Ivan Krylov
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
metaform
 
Android.глазами хакера
Neuron Hackspace
 
Антон Валюх - Использование паттерна Mvvm в android
DataArt
 
Java весна 2013 лекция 9
Technopark
 
The Best Portlet
Alexey Zavizionov
 
Лекция Android
Pavel Tsukanov
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Stfalcon Meetups
 
Sqadays 8-barancev
Alexei Lupan
 
Ad

More from Noveo (20)

PPTX
Гуманитарные специальности в IT-индустрии
Noveo
 
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
Noveo
 
PPTX
Стилизация текста (HTML5 тема 05 - стилизация текста)
Noveo
 
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
Noveo
 
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
Noveo
 
PPTX
Yii2
Noveo
 
PPTX
Сессии и авторизация
Noveo
 
PPTX
Rest
Noveo
 
PPTX
PHP basic
Noveo
 
PPTX
PHP Advanced
Noveo
 
PPTX
PHP and MySQL
Noveo
 
PPTX
MySQL
Noveo
 
PDF
Push Notifications (Lecture 22 – push notifications)
Noveo
 
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
Noveo
 
PDF
Работа с геоданными (Lecture 18 – geolocation)
Noveo
 
PDF
Animations (Lecture 17 – animations)
Noveo
 
PDF
Material Design (Lecture 15 – material design)
Noveo
 
PDF
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Noveo
 
PDF
XML, JSON (Lecture 11 – XML, JSON)
Noveo
 
PDF
Android - 16 - QR
Noveo
 
Гуманитарные специальности в IT-индустрии
Noveo
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Noveo
 
Yii2
Noveo
 
Сессии и авторизация
Noveo
 
Rest
Noveo
 
PHP basic
Noveo
 
PHP Advanced
Noveo
 
PHP and MySQL
Noveo
 
MySQL
Noveo
 
Push Notifications (Lecture 22 – push notifications)
Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
Noveo
 
Работа с геоданными (Lecture 18 – geolocation)
Noveo
 
Animations (Lecture 17 – animations)
Noveo
 
Material Design (Lecture 15 – material design)
Noveo
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Noveo
 
XML, JSON (Lecture 11 – XML, JSON)
Noveo
 
Android - 16 - QR
Noveo
 

Введение в Android-разработку (Lecture 06 – basics)

  • 2. Особенности платформы Достоинства Широкие возможности платформы Открытость Интеграция с другими приложениями Переиспользование библиотек Java Недостатки Разное железо Разные экраны Разные производители устройств Проблемы с памятью
  • 6. Особенности приложения Приложение ↔ название пакета "com.noveogroup.application" Приложeние ↔ Пользователь Linux 1 видимое приложение (2, начиная с Android N) Жизненный цикл приложения ≠ жизненный цикл процесса Управление жизненным циклом приложения и все View в UIThread
  • 8. Application Framework Это фреймворк! построен на шаблоне Model-View-ViewModel (MVVM)
  • 10. AndroidManifest.xml Имя java-пакета (id приложения) Объевление компонент: Activity Service BroadcastReceiver ContentProvider Описание возможностей компоненты: IntentFilter Классы, реализующие их Иконки, названия :) Перечисление разрешений Ограничение уровня Android API. Мета-данные И другое...
  • 11. Структура проекта (IDEA) 1. специфика Intellij IDEA 2. Исходники 3. Activity 4. Ресурсы 5. Разметка Activity 6. Ресурсы значений (тут строки) 7. Ресурсы изображений (тут картинки) 8. Генерируемые классы 9. R.java - контейнер id ресурсов
  • 12. Структура проекта (IDEA) Вместо bin/gen - build Исходники и ресурсы вместе Конфигурационные файлы Gradle даже параметры из Manifest Библиотеки можно как подкладывать руками ...а можно подгружать автоматически
  • 13. Ресурсы Типы ресурсов drawable image .png, .jpg, .gif 9patch .9.png .xml vector, shape, selector layout anim values: строки, числа, цвета xml raw Селекторы ресурсов Ориентация land, port Плотность точек ldpi, mdpi, hdpi, xhdpi, nodpi Размер экрана small, normal, large, xlarge sw720dp, sw600dp, ... Версия Android v3, ..., v15 Язык en, fr, ru, ...
  • 14. Ресурсы R.java 1 package com.noveogroup.example.app; 2 3 public final class R { 4 public R() { 5 6 public static final class string { 7 public static final int app_name = 2130968576; 8 public static final int hello_world = 2130968577; 9 } 10 11 public static final class layout { 12 public static final int activity_main = 2130903040; 13 } 14 15 public static final class drawable { 16 public static final int ic_launcher = 2130837504; 17 } 18 19 public static final class attr { 20 } 21 } 22 }
  • 15. Строковые ресурсы res/values/strings.xml 1 <string name="test">String</string> 2 <string name="test_arg">String with integer argument: %1$d</string> res/values-ru/strings.xml 1 <string name="test">Строка</string> 2 <string name="test_arg">Cтрока с целочисленным аргументом: %1$d</string> src/com/noveogroup/example/app/MainActivity.java 1 TextView simpleView = (TextView) findViewById(R.id.text_view_simple); 2 simpleView.setText(getString(R.string.test)); 3 4 TextView argsView = (TextView) findViewByid(R.id.text_view_args) 5 argsView.setText(getString(R.string.test_arg, 50));
  • 18. Восстановление Activity 1 public class MainActivity extends Activity { 2 @Override 3 void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 } 6 7 @Override 8 void onRestoreInstanceState(Bundle savedInstanceState) { 9 super.onRestoreInstanceState(savedInstanceState); 10 } 11 12 @Override 13 void onSaveInstanceState(Bundle outState) { 14 super.onSaveInstanceState(outState); 15 } 16 17 @Override 18 void onDestroy() { 19 super.onDestroy(); 20 } 21 }
  • 19. Fragment Доступны с API 11 (Android 3.0) Портированы для старых версий в Android Support Library Позволяют объединиться несколько экранов в одном. Существуют только как часть Activity.
  • 22. Android L API 20 - 22 Material Design RecyclerView на замену ListView/GridView ART Compiler Улучшение уведомлений Многое для SmartWatch, TV и Auto
  • 24. Android M API 23 Режиме Doze нельзя в сеть нельзя синхроинизироваться работает с прерываниями Безопасность Runtime Permissions: опасные и не очень Ограничение доступа к MAC-адресу Apache HTTP Client Много новых ViewGroup App Links * Приложения для старого API нормально запускаются
  • 26. Android N API 24 Многооконный режим Масштабирование экрана Режиме Doze Нельзя: будить телефон, GPS, искать Wi-Fi Уведомления: Можно: обновлять, группировать, менять view RemoteInput Java 8 + Jack compiler Закрыт доступ через NDK к закрытым API системы * Приложения для старого API не работают, если экран масштабирован
  • 27. Полезные ссылки Документация Android Android Developers Blog Учебник по Android Android L Changes Android M Changes Android N Changes