Skip to content

πŸ› οΈπŸ“±Application for prototyping. Architecture of Android App. // ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для прототипирования. АрхитСктура Android прилоТСния.

coder-chekunkov/Android-Architecture-Prototype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ› οΈπŸ“±ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для прототипирования. АрхитСктура MVVM.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для быстрого прототипированя простых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ MVVM.


πŸ“– ВСорСтичСская Ρ‡Π°ΡΡ‚ΡŒ

MVVM (Model-View-ViewModel) - Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ проСктирования. MVVM ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ раздСляСт ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ отобраТСния. MVVM состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частСй:

  • Model - прСдоставляСт собой Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ модСлью выступаСт слой, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с бэкэнда ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  • View - ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Android-прилоТСниях View - это, Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ, Activity ΠΈΠ»ΠΈ Fragment.
  • ViewModel - ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° соСдинСниС Model ΠΈ View. ViewModel подписана Π½Π° обновлСния Model, Π° View подписана Π½Π° ViewModel. ΠŸΡ€ΠΈ этом ViewModel Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ явной ссылки Π½Π° View. Часто подписки Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° проСктирования Observer.

ViewModel - класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для Activity ΠΈΠ»ΠΈ Fragment. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ взаимодСйствиС Activity / Fragment с ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ прилоТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, связь с классами бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ).

LiveData - класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Observer. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, LiveData ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ» Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°, Ρ‚.Π΅. LiveData ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° прилоТСния, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±Ρ‹Π»Π° привязана (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Activity, Fragment, Service).
LiveData прСдоставляСт Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ состоянии. Observer Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ состояниС, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ lifecycle ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состояниС STARTED ΠΈΠ»ΠΈ RESUMED. АвтоматичСски отписываСт Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… lifecycle ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состояниС DESTROYED.


ℹ️ MVVM-architecture - version 1.0

  • View -> ViewModel -> Model (Repository);
  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ стСковая навигация Π½Π° Π±Π°Π·Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ²;
    • ДСйствия: push/pop (Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ экран / Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π°Π·Π°Π΄);
    • ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ экранами Π² Π΄Π²ΡƒΡ… направлСниях;
    • Навигация ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° сторонС ViewModel;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SavedStateHandle;
  • ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ покрытия слоя ViewModel тСстами.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… экранов: Π³Π»Π°Π²Π½ΠΎΠ΅ мСню, список с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ список с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ языка программирования.

  • Π­ΠΊΡ€Π°Π½ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ (фотография ΠΈ имя), Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ языкС программирования (ΠΈΠΊΠΎΠ½ΠΊΠ° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ для смСны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ языка программирования.
  • Π­ΠΊΡ€Π°Π½ Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ состоит ΠΈΠ· списка с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ произвСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π²Π΅Ρ€Ρ…/Π²Π½ΠΈΠ· ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ (Π² случаС, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½).
  • Π­ΠΊΡ€Π°Π½ Π²Ρ‹Π±ΠΎΡ€Π° языка программирования состоит ΠΈΠ· списка с Π½Π°Π±ΠΎΡ€ΠΎΠΌ языков программирования, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ.

На экранах Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ языка программирования Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° "Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ элСмСнт" Π² Toolbar, которая случайно Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ элСмСнт ΠΈ мСняСт Π΅Π³ΠΎ статус Π½Π° "Π²Ρ‹Π±Ρ€Π°Π½ΠΎ".

GIF GIF GIF


ℹ️ MVVM-architecture - version 2.0

  • View -> ViewModel -> Model (Repository);
  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ навигация Π½Π° Π±Π°Π·Π΅ Jetpack Navigation Compose;
    • ДСйствия: push/pop (Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ экран / Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π°Π·Π°Π΄);
    • ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ экранами Π² Π΄Π²ΡƒΡ… направлСниях;
    • Навигация ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° сторонС ViewModel;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SavedStateHandle;
  • ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ покрытия слоя ViewModel тСстами.

GIF GIF GIF
GIF GIF GIF


πŸ“§ ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ вопросов ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ - ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ со ΠΌΠ½ΠΎΠΉ.
🀝 Бпасибо, Ρ‡Ρ‚ΠΎ Π·Π°ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Π»ΠΈΡΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ.

About

πŸ› οΈπŸ“±Application for prototyping. Architecture of Android App. // ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для прототипирования. АрхитСктура Android прилоТСния.

Topics

Resources

Stars

Watchers

Forks

Languages