Similar presentations:
Технологии разработки мобильных приложений
1.
Технология разработкимобильных приложений
Тонких Артём Петрович
2.
Знакомство с курсом3.
Первое приложение4.
Интерфейс студии и структура проекта5.
Интерфейс студии и структура проекта. Хранение файлов6.
Интерфейс студии и структура проекта. Gradle Scripts7.
Создание и запуск Android эмулятора8.
Создание стороннего эмулятора9.
Краткое знакомство с часто встречающимися понятиями10.
Основные компоненты мобильной ОС. ContextApplication
Activity
Service
AndroidManifest.xml
BroadcastReceiver
ContentProvider
11.
Activity. Жизненный циклResumed
(visible)
onResume()
onResume()
Paused
(partly visiable)
Started
(visible)
onStart()
Created
onCreate()
onPause()
onStop()
onStart()
onRestart()
Stopped
(hidden)
onDestroy()
Destroyed
12.
Интерфейс. View и ViewGroup13.
Реализация ViewGroupViewGroup
LinearLayout
TableLayout
GridLayout
RelativeLayout
FrameLayout
ConstraintLayout
14.
ImageView, EditText15.
Система сборки Gradle16.
Toast17.
Menu, ContextMenuПример заполненного меню:
18.
Знакомство с Fragment19.
Жизненный цикл фрагмента20.
Формат JSON. Библиотека GSON21.
Вёрстка экрана логина22.
Добавление ссылок на View элементы23.
Валидация email и password. Ошибки в Toast24.
Верстка экрана профиля25.
Создание активити профиля26.
Создание класса User27.
Создание хост активити для фрагментов28.
Миграция логики AuthActivity во фрагмент29.
Миграция логики AuthActivity во фрагмент. СозданиеAuthActivity
30.
Добавление фрагмента регистрации.31.
Создание класса PreferenceHelper32.
Создание класса PreferenceHelper. Запуск и исправлениеошибок
33.
Создание класса PreferenceHelper. Поведение методаIsInputValid().
34.
Логика авторизации35.
Логика авторизации. Работа с бэкстеком36.
Экран профиля37.
Экран профиля. Логаут, меню38.
Обновлённая логика авторизации39.
Экран профиля40.
Экран профиля. Извлечение изображения из галереи41.
Градиентный фон42.
Многопоточность и параллельное программирование43.
Обзор инструментов для обеспечения многопоточности в Java(Thread, Runnable, Callable, Future, Executors)
44.
Знакомство с Service, IntentServiceForeground-service
Background-service
Bound-service
45.
Знакомство с Service, IntentService. Жизненный цикл сервисаCall to
startService()
Call to
bindService()
onCreate()
onCreate()
onStartCommand()
onBind()
Service
running
Clients are
bound to
service
The service is stopped
by itself or a client
Active
LifeTime
The service is stopped
by itself or a client
onUnBind()
onDestroy()
onDestroy()
Service
shut down
Service
shut down
Inbounded
service
Bounded
service
46.
Создание Service47.
Создание Service. Создание кнопок48.
Создание Service. Добавление задачи49.
BroadcastReceiver, знакомство50.
Создание BroadcastReceiver51.
Связка Activity-Service52.
Связка BroadcastReceiver-Activity53.
Notification. Показ уведомлений54.
Notification Channels. Что это и для чего?55.
Показ Notification56.
BroadcastReceiver в манифесте57.
AsynсTask, знакомство58.
AsynсTask59.
HaMeR60.
Handler61.
LoaderonLoaderReset(Loader<D>)
onCreateLoader(int, Bundle)
onLoadFinished(Loader<D>, D)
62.
ContentProvider63.
Экраны со списками64.
Обзор ListView65.
GridView66.
ListView + GridView vs RecyclerView. Основные отличия67.
RecyclerView. Практика68.
Работа с RecyclerView (Тонких Артём Петрович)1)
2)
3)
4)
5)
6)
7)
8)
69.
Работа с RecyclerView (Тонких Артём Петрович)70.
Добавление SwipeRefreshLayout71.
Добавление ContentProvider, CursorLoader, показ контактов вRecyclerView
1)
2)
3)
4)
5)
72.
Обработка нажатий на элементы списка73.
Добавление декораторов1 метод
2 метод
74.
Runtime Permissions75.
Запрос Runtime PermissionsСоздание запроса
Вызов запроса
Показ запроса
76.
Запись данных в файловую систему. Код MainActivity.class77.
Запись данных в файловую систему. Код activity_main.xml78.
Проектирование БД на бумагеSongs
AlbumsSongs
№
Название
Тип переменной
№
Название
Тип переменной
1
id
численный
1
id
численный
2
name
строковый
2
album_id
численный
3
duration
строковый
3
song_id
численный
Comments
Albums
№
Название
Тип переменной
1
id
численный
2
name
строковый
3
release_date
строковый
№
Название
Тип переменной
1
id
численный
2
album_id
численный
3
text
строковый
4
author
строковый
5
timestamp
дата
79.
Добавление и доступ БД80.
Создание Room базы81.
Сохранение и извлечение данных с Room82.
Добавление контент провайдера над Room83.
Что такое сервер84.
Что такое Http85.
Что такое OkHttp?Основные запросы OkHttp:
1. Пул соединений;
2. Gziping;
3. Кэширование;
4. Восстановление после сетевых ошибок;
5. Редиректы;
6. Повторы;
7. Поддержка синхронных и асинхронных вызовов;
8. Interceptors.
86.
OkHttp. Interceptors87.
OkHttp. Как работает?88.
Регистрация c помощью OkHttp389.
Создание ApiUtils90.
Авторизация с помощью OkHttp391.
Знакомство с Retrofit2Основные возможности Retrofit:
•Вся сила OkHttp;
•API Interfaces;
•Call Adapters;
•Converters;
•Задание параметров URL и поддержка запроса;
•Преобразование объектов в тело запроса;
•Многостраничный запрос и загрузка файлов.
92.
Знакомство с Retrofit2. Как работает?93.
Добавление и инициализация Retrofit2 в проект94.
Добавление Gson конвертера для Retrofit295.
Создание интерфейса API в проекте96.
Регистрация c помощью RetrofitПереходим в mOnRegistrationClickListener и стираем
Переделываем в
97.
Добавление в проект RecyclerView, Adapter, Holder и получениесписка альбомов
98.
Добавление экрана детального отображения альбома99.
Тема 6. Знакомство с RxJava2Тип
Описание
Flowable<T>
Излучает 0 или n элементов и завершается с успехом или ошибкой. Поддерживает
backpressure, с его помощью можно контролировать, как быстро источник испускает
элементы.
Observable<T>
Излучает 0 или n элементов и завершается с успехом или ошибкой. Не поддерживает
Backpressure
Single<T>
Излучает либо один элемент, либо событие ошибки. Реактивная версия вызова метода
Maybe<T>
Успешно с о элементом, или без элемента, или без ошибок. Реактивная версия типа
Optional
Completable
Либо завершается с успехом, либо с событием ошибки. Он никогда не излучает
элементы. Реактивная версия типа Runnable
100.
Инициализация RxJava2. Добавление Call Adapter. Обновлениерегистрации
101.
Получение альбомов с сервера с помощью RxJava2102.
Логика сохранения и получения альбомов с помощью Room103.
Паттерн MVP. Для чего нужна архитектура104.
Принципы SOLID105.
Получение API key106.
Создание базовых классов MVP107.
MVP в ProjectsFragment108.
Обзор Model/View/ViewModel109.
Плюсы и минусы MVVMПлюсы:
• Компоненты слабо связаны;
• Databinding уменьшает количество кода;
• Несколько View –> одна ViewModel.
Минусы:
• Показ Toast и диалогов сложно обработать в MVVM;
• Показ анимаций или данных с задержкой;
• Необходимость обработки команды во View.
110.
Обзор DataBinding Library111.
Обзор DataBinding Library. Обработка события нажатийПервый метод:
Второй метод:
112.
Обзор DataBinding Library. Настройка импортов и переменных113.
Работа с Behancer114.
Behancer на MVVM. VM для list item115.
Выделение логики обновления в RefreshActivity116.
Создание ProjectsViewModel117.
Добавление кастомных атрибутов118.
Настройка Databinding119.
Обзор Android Architecture Components120.
Добавление архитектурных компонентов121.
Получение Live данных из БД122.
Получение данных страницами из БД123.
Dependency Inversion и Inversion of Control124.
Dependency Injection125.
Service Locator vs DI126.
Service Locator vs DI. Различие в возможностях использования127.
О графе зависимостей128.
Реализуем DI в приложении своими руками129.
Dagger 2. Часть 1130.
Dagger 2. Часть 2131.
Dagger 2 в MVP. Используем зависимости132.
Обзор Toothpick133.
Обзор Toothpick. Схема работы134.
Обзор Toothpick. Пример135.
Clean Architecture136.
Clean Architecture в Android-приложении137.
Clean Architecture. Программный код138.
Плюсы и минусы Clean ArchitectureПлюсы:
1. Модульное разделение;
2. Правило зависимостей;
3. Тестирование;
Минусы
1.Громоздкость;
2.Порог вхождения.
4. Наличие Domain слоя;
5. Использовать любой понравившийся вам MVпаттерн для UI-слоя;
6. Кастомизация;
7. Хорошее комьюнити;
8. Гайды и богатая база исходных кодов с примерами.
software