Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди (рдореЗрд░рд╛ рдЕрдиреБрднрд╡)

рд╣реЗрдмрд░рд╛, рдирдорд╕реНрдХрд╛рд░!

рдЖрдЬ рдореИрдВ рдЙрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлреЙрд▓реЛ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд▓реЗрддрд╛ рд╣реВрдВ, рдФрд░ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ (ViewModel, LiveData, LiveEvent) + Kotlin Coroutines рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╕рдВрд▓рдЧреНрди рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ рдЬреЛ GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

рдЕрд╕реНрд╡реАрдХрд░рдг


рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рджреЛрд╖реЛрдВ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдЪ рдФрд░ рднрдЯрдХрд╛рд╡ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирддреЗ рд╣реИрдВ, рдФрд░ рдЪрдпрдирд┐рдд рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕рдХреА рдкрд░реНрдпрд╛рдкреНрддрддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рд╕рдорд╕реНрдпрд╛: рд╣рдореЗрдВ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


рдЬрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореИрдВрдиреЗ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЖрд╡реЗрджрди рддрд░реНрдХ рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдЕрдВрджрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдлреНрд░реИрдЧрдореЗрдВрдЯ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдб рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдкреБрди: рдЙрдкрдпреЛрдЧ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреБрдХрдбрд╝реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рднрдЧрд╡рд╛рди рдХреА рд╡рд╕реНрддреБ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдорд╣рдВрдЧрд╛ рдФрд░ рднрд╛рд╡рдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдорд╣рдВрдЧрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рдХреЛрдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рд╣реИрдВ), рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рджрд╛рд╡реЗ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╡рд╣рд╛рдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рдЕрдм рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдлреИрд╢рдиреЗрдмрд▓ рд╣реИред рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рджреЗрдЦрд╛ рдХрд┐ рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдЬреЛ рдЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░: рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдореЙрдбрд▓ рд▓реМрдЯрд╛рддреА рд╣реИрдВред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдордЭ рдирд╣реАрдВ рд╣реИред рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╣рддреА рд╣реИрдВ, рдЕрдХреНрд╕рд░ рд▓реЙрдЬрд┐рдХ рд╡реНрдпреВрдореЙрдбрд▓ рдкрд░ рдЯрд┐рдХреА рд╣реЛрддреА рд╣реИ рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдЯреБрдХрдбрд╝реЛрдВ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдмрд╕ рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕рдм рддрдм рдПрдХ рдЧрдбрд╝рдмрдбрд╝реА рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рдирд╣реАрдВред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп


рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ (рдЬрдм рд╣рдо рдПрдХ рдЖрд░рдИрдПрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ), рдПрдВрдбреНрд░реЙрдЗрдб - рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг (рдпреВрдЖрдИ, рд╕реЗрд╡рд╛рдПрдВ), рдЖрджрд┐ред рдореВрд▓ рдореЗрдВ, рдореИрдВ рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред

рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпреВрдЖрдИ, рдПрдкреАрдЖрдИ, рдмрд┐рдЬрдиреЗрд╕ рд▓реЙрдЬрд┐рдХ, рдореЙрдбрд▓ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдзрд╛рд░ рджреЗ, рд╢рд┐рдерд┐рд▓ рд░реВрдк рд╕реЗ рдпреБрдЧреНрдорд┐рдд рд╣реЛ, рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдлреИрд▓реЗред рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ, рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдореЗрд░реЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  1. рдпреВрдЖрдИ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреЗрд╡рд▓ рддреАрди рдХрд╛рд░реНрдп рд╣реИрдВ:
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ UI рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИред рдпрд╣рд╛рдБ рд╡рд┐рдЧреЗрдЯреНрд╕, рдПрдирд┐рдореЗрд╢рди, рдЯреБрдХрдбрд╝реЗ рдЖрджрд┐ рд╣реИрдВред
  3. . ViewModel LiveData.
  4. . framework, . .
  5. - . .


рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдпреЛрдЬрдирд╛рдмрджреНрдз рдЖрд░реЗрдЦ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЫрд╡рд┐

рд╣рдо рдкрд░рддреЛрдВ рдореЗрдВ рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдиреАрдЪреЗ рдХреА рдкрд░рдд рдКрдкрд░ рдХреА рдкрд░рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреА рд╣реИред рдФрд░ рд╢реАрд░реНрд╖ рдкрд░рдд рдХреЗрд╡рд▓ рдПрдХ рдкрд░рдд рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реНрддрд░ рдХрдо рд╣реИред рдЙрдиред рдПрдкреАрдЖрдИ рдкрд░рдд рдПрдХ рдбреЛрдореЗрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред

рдПрдХ рдбреЛрдореЗрди рдкрд░рдд рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЗрдХрд╛рдИ рд╣реЛрддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмреИрдВрдХ рдХреЗ рд▓рд┐рдП, рдмреНрдпрд╛рдЬ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЛрдг рд╕рдВрд╕реНрдерд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЖрджрд┐ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдкрд░рдд рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рдХрдиреЗрдХреНрд╢рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрдкреАрдЖрдИ рдкрд░рдд, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЗрд╕ рдкрд░рдд рдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

, , тАФ . . 2- . , . . TDD , . Android, API ..

Android-.

рдЫрд╡рд┐

рддреЛ, рддрд░реНрдХ рдкрд░рдд рдХреА рдХреБрдВрдЬреА рд╣реИ, рдпрд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЙрдЬрд┐рдХ рд▓реЗрдпрд░ рд╕рдВрджрд░реНрднрд┐рдд рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрд░реНрдХ рдкрд░рдд рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рддрд░реНрдХ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдПрдкреАрдЖрдИ, рдПрдВрдбреНрд░реЙрдЗрдб, рдЖрджрд┐) рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХрд╛ рддрдерд╛рдХрдерд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ, рдЬреЛ рддрд░реНрдХ рдХреЛ рд╡рд┐рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рддрд░реНрдХ рдкрд░рдд рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп (рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЗ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдбреЛрдореЗрди, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдореИрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпрд╛ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдзрд┐ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЗрдВрдЯрд░рдПрдХреНрдЯрд░ рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрдИ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХреЛ рд╣рд╡рд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдпреВрдПрдордПрд▓ рд╕реНрдХреАрдорд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдорд╛рд╡реЗрд╢рди рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдХрдиреЗрдХреНрд╢рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╡реЗрджрди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдЫрд╡рд┐

  1. рдПрдХ Android рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЧрддрд┐рд╡рд┐рдзрд┐, рдЯреБрдХрдбрд╝реЗ, рдЖрджрд┐)ред
  2. рдПрдХ ViewModel (рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
  3. ViewModel рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ ViewModel рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдбрд┐ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддрд╛ рд╣реИред
  5. UI рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдПрдХ рдХрдорд╛рдВрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
  6. рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Login.execute (рд▓реЙрдЧрд┐рди, рдкрд╛рд╕рд╡рд░реНрдб)ред
  7. DI , . ( api, ). . , , , REST JSON . , , . , . , . - . , . , , . , , .
  8. . ViewModel, UI. LiveData (.9 10).

рдЙрдиред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рддрд░реНрдХ рдФрд░ рдЙрд╕рдХреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреА рд╣реИред рд╣рдордиреЗ рдПрдХ рдбрдмрд▓ рд░реВрдкрд╛рдВрддрд░рдг рджреЗрдЦрд╛: рдкрд╣рд▓рд╛ рд╣реИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдФрд░ рджреВрд╕рд░рд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИ рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдбреЗрдЯрд╛ рджреЗрддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо UI рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдореЙрдбрд▓ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рд╕рд╛рде viewModel рдФрд░ UI рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХрдорд╛рдВрдб рдХреЛ

рдпреВрдЖрдИ рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд╡реЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдШрдЯрдХреЛрдВ рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд░рд▓ рд╣реИ, рд╡рд┐рдЪрд╛рд░ рдХреА рдЧрд╣рд░реА рд╕рдордЭ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк reactiveui.net рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВc # рдХреЗ рд▓рд┐рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЕрдкрдирд╛ рдХрд╛рдо рдХреЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

рдХрдорд╛рдВрдб рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдо (рдбреЗрдЯрд╛ рдпрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯреАрдо рдкреГрд╖реНрдарднреВрдорд┐-рдЧрдгрдирд╛ рдкрджреНрдзрддрд┐ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреА рд╣реИред рдореИрдВ coroutines рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ RX рд╕реЗ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб + рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рд░ рд╕рдореВрд╣ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЯреАрдо рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ: рдЪрд╛рд╣реЗ рдЗрд╕реЗ рдЕрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЗрд╕реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЯреАрдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрдмрд▓-рдХреЙрд▓ рд╕рдорд╕реНрдпрд╛ (рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ рдмрд╛рд░ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдСрдкрд░реЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ) рдпрд╛ рджреГрд╢реНрдпрддрд╛ рдФрд░ рд░рджреНрджреАрдХрд░рдг рд╕рдорд╕реНрдпрд╛рдПрдВред

рдЙрджрд╛рд╣рд░рдг


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛: рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВред
рд╡рд┐рдВрдбреЛ рдореЗрдВ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ "рд▓реЙрдЧрд┐рди" рдмрдЯрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд╛рд░реНрдп рдХрд╛ рддрд░реНрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдореЗрдВ 4 рд╕реЗ рдХрдо рдЕрдХреНрд╖рд░ рд╣реИрдВ рддреЛ "рд▓реЙрдЧрд┐рди" рдмрдЯрди рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  2. рд▓реЙрдЧрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди "рд▓реЙрдЧрд┐рди" рдмрдЯрди рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  3. рд▓реЙрдЧрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рд╕рдВрдХреЗрддрдХ (рд▓реЛрдбрд░) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  4. рдпрджрд┐ рд▓реЙрдЧрд┐рди рд╕рдлрд▓ рд╣реИ, рддреЛ рдПрдХ рд╕реНрд╡рд╛рдЧрдд рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  5. рдпрджрд┐ рд▓реЙрдЧрд┐рди рдФрд░ / рдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдЧрд▓рдд рд╣реИ, рддреЛ рд▓реЙрдЧрд┐рди рдХреНрд╖реЗрддреНрд░ рдХреЗ рдКрдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
  6. рдпрджрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд▓реЙрдЧрд┐рди рдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХрд┐рд╕реА рд╡рд░реНрдг рдХрд╛ рдХреЛрдИ рдЗрдирдкреБрдЯ рдЕрдЧрд▓реЗ рдкреНрд░рдпрд╛рд╕ рддрдХ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред

рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдирдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдореЗрдВ рд╕рдм рдХреБрдЫ рдбрд╛рд▓рдХрд░ред
рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рджреЛ рдореБрдЦреНрдп рдирд┐рдпрдореЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ:

  1. рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд╡рд┐рд╡рд░рдг рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
  2. рдпреВрдЖрдИ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рд░рд▓ рд╣реИред рд╡рд╣ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рд╡рд╣ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХрдорд╛рдВрдб рднреА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред

рдпрд╣ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ:

рдЫрд╡рд┐

MainActivity рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

class MainActivity : AppCompatActivity() {

   private val vm: MainViewModel by viewModel()

   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)

       bindLoginView()
       bindProgressBar()

       observeAuthorization()
       observeRefreshView()
   }

   private fun bindProgressBar() {
       progressBar.bindVisibleWithCommandIsExecuting(this, vm.loginCommand)
   }

   private fun bindLoginView() {
       loginEdit.bindAfterTextChangedWithCommand(vm.loginValidityCommand)
       passwordEdit.bindAfterTextChangedWithCommand(vm.passwordValidityCommand)

       loginButton.bindCommand(this, vm.loginCommand) {
           LoginParameters(loginEdit.text.toString(), passwordEdit.text.toString())
       }
   }

   private fun observeAuthorization() {
       vm.authorizationSuccessLive.observe(this, Observer {
           showAuthorizeSuccessMsg(it?.data)
       })
       vm.authorizationErrorLive.observe(this, Observer {
           showAuthorizeErrorMsg()
       })
   }

   private fun observeRefreshView() {
       vm.refreshLoginViewLive.observe(this, Observer {
           hideAuthorizeErrorMsg()
       })
   }

   private fun showAuthorizeErrorMsg() {
       loginErrorMsg.isInvisible = false
   }

   private fun hideAuthorizeErrorMsg() {
       loginErrorMsg.isInvisible = true
   }

   private fun showAuthorizeSuccessMsg(name : String?) {
       val msg = getString( R.string.success_login, name)
       Toast.makeText(this, msg, Toast.LENGTH_LONG).show()
   }
}


рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, UI рдирд┐рдпрдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рд╕рд░рд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦреЗ, рдЬреИрд╕реЗ рдХрд┐ bindVanishWithCommandIsExecuting, UI рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдХреЛ рдирд╣реАрдВред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ , рдЕрдЧрд░ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЖрдк рдЦреБрдж рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдм, рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

All Articles