23.83M
Category: softwaresoftware

Технологии разработки мобильных приложений

1.

Технология разработки
мобильных приложений
Тонких Артём Петрович

2.

Знакомство с курсом

3.

Первое приложение

4.

Интерфейс студии и структура проекта

5.

Интерфейс студии и структура проекта. Хранение файлов

6.

Интерфейс студии и структура проекта. Gradle Scripts

7.

Создание и запуск Android эмулятора

8.

Создание стороннего эмулятора

9.

Краткое знакомство с часто встречающимися понятиями

10.

Основные компоненты мобильной ОС. Context
Application
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 и ViewGroup

13.

Реализация ViewGroup
ViewGroup
LinearLayout
TableLayout
GridLayout
RelativeLayout
FrameLayout
ConstraintLayout

14.

ImageView, EditText

15.

Система сборки Gradle

16.

Toast

17.

Menu, ContextMenu
Пример заполненного меню:

18.

Знакомство с Fragment

19.

Жизненный цикл фрагмента

20.

Формат JSON. Библиотека GSON

21.

Вёрстка экрана логина

22.

Добавление ссылок на View элементы

23.

Валидация email и password. Ошибки в Toast

24.

Верстка экрана профиля

25.

Создание активити профиля

26.

Создание класса User

27.

Создание хост активити для фрагментов

28.

Миграция логики AuthActivity во фрагмент

29.

Миграция логики AuthActivity во фрагмент. Создание
AuthActivity

30.

Добавление фрагмента регистрации.

31.

Создание класса PreferenceHelper

32.

Создание класса PreferenceHelper. Запуск и исправление
ошибок

33.

Создание класса PreferenceHelper. Поведение метода
IsInputValid().

34.

Логика авторизации

35.

Логика авторизации. Работа с бэкстеком

36.

Экран профиля

37.

Экран профиля. Логаут, меню

38.

Обновлённая логика авторизации

39.

Экран профиля

40.

Экран профиля. Извлечение изображения из галереи

41.

Градиентный фон

42.

Многопоточность и параллельное программирование

43.

Обзор инструментов для обеспечения многопоточности в Java
(Thread, Runnable, Callable, Future, Executors)

44.

Знакомство с Service, IntentService
Foreground-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.

Создание Service

47.

Создание Service. Создание кнопок

48.

Создание Service. Добавление задачи

49.

BroadcastReceiver, знакомство

50.

Создание BroadcastReceiver

51.

Связка Activity-Service

52.

Связка BroadcastReceiver-Activity

53.

Notification. Показ уведомлений

54.

Notification Channels. Что это и для чего?

55.

Показ Notification

56.

BroadcastReceiver в манифесте

57.

AsynсTask, знакомство

58.

AsynсTask

59.

HaMeR

60.

Handler

61.

Loader
onLoaderReset(Loader<D>)
onCreateLoader(int, Bundle)
onLoadFinished(Loader<D>, D)

62.

ContentProvider

63.

Экраны со списками

64.

Обзор ListView

65.

GridView

66.

ListView + GridView vs RecyclerView. Основные отличия

67.

RecyclerView. Практика

68.

Работа с RecyclerView (Тонких Артём Петрович)
1)
2)
3)
4)
5)
6)
7)
8)

69.

Работа с RecyclerView (Тонких Артём Петрович)

70.

Добавление SwipeRefreshLayout

71.

Добавление ContentProvider, CursorLoader, показ контактов в
RecyclerView
1)
2)
3)
4)
5)

72.

Обработка нажатий на элементы списка

73.

Добавление декораторов
1 метод
2 метод

74.

Runtime Permissions

75.

Запрос Runtime Permissions
Создание запроса
Вызов запроса
Показ запроса

76.

Запись данных в файловую систему. Код MainActivity.class

77.

Запись данных в файловую систему. Код activity_main.xml

78.

Проектирование БД на бумаге
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.

Сохранение и извлечение данных с Room

82.

Добавление контент провайдера над Room

83.

Что такое сервер

84.

Что такое Http

85.

Что такое OkHttp?
Основные запросы OkHttp:
1. Пул соединений;
2. Gziping;
3. Кэширование;
4. Восстановление после сетевых ошибок;
5. Редиректы;
6. Повторы;
7. Поддержка синхронных и асинхронных вызовов;
8. Interceptors.

86.

OkHttp. Interceptors

87.

OkHttp. Как работает?

88.

Регистрация c помощью OkHttp3

89.

Создание ApiUtils

90.

Авторизация с помощью OkHttp3

91.

Знакомство с Retrofit2
Основные возможности Retrofit:
•Вся сила OkHttp;
•API Interfaces;
•Call Adapters;
•Converters;
•Задание параметров URL и поддержка запроса;
•Преобразование объектов в тело запроса;
•Многостраничный запрос и загрузка файлов.

92.

Знакомство с Retrofit2. Как работает?

93.

Добавление и инициализация Retrofit2 в проект

94.

Добавление Gson конвертера для Retrofit2

95.

Создание интерфейса 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.

Получение альбомов с сервера с помощью RxJava2

102.

Логика сохранения и получения альбомов с помощью Room

103.

Паттерн MVP. Для чего нужна архитектура

104.

Принципы SOLID

105.

Получение API key

106.

Создание базовых классов MVP

107.

MVP в ProjectsFragment

108.

Обзор Model/View/ViewModel

109.

Плюсы и минусы MVVM
Плюсы:
• Компоненты слабо связаны;
• Databinding уменьшает количество кода;
• Несколько View –> одна ViewModel.
Минусы:
• Показ Toast и диалогов сложно обработать в MVVM;
• Показ анимаций или данных с задержкой;
• Необходимость обработки команды во View.

110.

Обзор DataBinding Library

111.

Обзор DataBinding Library. Обработка события нажатий
Первый метод:
Второй метод:

112.

Обзор DataBinding Library. Настройка импортов и переменных

113.

Работа с Behancer

114.

Behancer на MVVM. VM для list item

115.

Выделение логики обновления в RefreshActivity

116.

Создание ProjectsViewModel

117.

Добавление кастомных атрибутов

118.

Настройка Databinding

119.

Обзор Android Architecture Components

120.

Добавление архитектурных компонентов

121.

Получение Live данных из БД

122.

Получение данных страницами из БД

123.

Dependency Inversion и Inversion of Control

124.

Dependency Injection

125.

Service Locator vs DI

126.

Service Locator vs DI. Различие в возможностях использования

127.

О графе зависимостей

128.

Реализуем DI в приложении своими руками

129.

Dagger 2. Часть 1

130.

Dagger 2. Часть 2

131.

Dagger 2 в MVP. Используем зависимости

132.

Обзор Toothpick

133.

Обзор Toothpick. Схема работы

134.

Обзор Toothpick. Пример

135.

Clean Architecture

136.

Clean Architecture в Android-приложении

137.

Clean Architecture. Программный код

138.

Плюсы и минусы Clean Architecture
Плюсы:
1. Модульное разделение;
2. Правило зависимостей;
3. Тестирование;
Минусы
1.Громоздкость;
2.Порог вхождения.
4. Наличие Domain слоя;
5. Использовать любой понравившийся вам MVпаттерн для UI-слоя;
6. Кастомизация;
7. Хорошее комьюнити;
8. Гайды и богатая база исходных кодов с примерами.

139.

Создание модулей data, domain и presentation

140.

Создание ProjectServer
English     Русский Rules