рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП
JetPack рдХреЗ "рдЧрд╛рдЗрдб рдЯреВ рдРрдк рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░" рдХрд╛ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛
рд╣реВрдВ ред рдореИрдВ рдЖрдкрдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдкрд░ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ, рдФрд░ рд╡реЗ рддрдп рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рд╕рд╛рде рд╣реА, рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреА рд╣реИ рдФрд░ рдордЬрдмреВрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреА рд╣реИред рдпрд╣ рдкреГрд╖реНрда рдПрдВрдбреНрд░реЙрдЗрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓ рдкрд░рд┐рдЪрдп рдорд╛рдирддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ, рддреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ
рдбреЗрд╡рд▓рдкрд░ рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕ рдЧрд╛рдЗрдб рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред рдпрджрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдЯрд▓рд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдЗрд╕ рдЧрд╛рдЗрдб рдХреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрдбрдиреЗрд╕ рдХреЛрд░реНрд╕,
"рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛" рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ ред
рдореЛрдмрд╛рдЗрд▓ рдРрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдпрд╛ рд▓реЙрдиреНрдЪрд░ рд╕реЗ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХрд▓ рдЕрдЦрдВрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред Android рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ
рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА ,
рдлреНрд░реИрдЧрдореЗрдВрдЯ ,
рд╕рд░реНрд╡рд┐рд╕реЗрдЬ ,
рдХрдВрдЯреЗрдВрдЯрдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдФрд░
рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд╡рд░реНрд╕ рд╕рд╣рд┐рдд рдХрдИ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред
рдЖрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдкреНрд░рдХрдЯ рдореЗрдВ рдЗрди рдпрд╛ рдХреБрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШрдЯрдХреЛрдВ рдХреА
рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ ред Android рддрдм рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдИ рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдХреНрд╕рд░ рдХрдо рд╕рдордп рдореЗрдВ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕реЛрд╢рд▓ рдореАрдбрд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдлреЛрдЯреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрдорд░рд╛ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред Android рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреИрдорд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕рдХрд╛ рдЕрдиреБрднрд╡ рддреНрд░реБрдЯрд┐рд╣реАрди рд╣реИред
- рдПрдХ рдХреИрдорд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреНрдп рдЗрд░рд╛рджреЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдлрд╛рдЗрд▓ рдкрд┐рдХрд░ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛, рдЬреЛ рдПрдХ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рдЕрдВрдд рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИ рдФрд░ рдлреЛрдЯреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдлреЛрди рдХреЙрд▓ рдпрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗ рдмрд╛рдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд░реБрдХрд╛рд╡рдЯ рд╕реЗ рдЬреБрдбрд╝реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдлреЛрдЯреЛ-рд╕рд╛рдЭрд╛рдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрди рдмрд┐рдВрджреБрдУрдВ (рдХрд╛рд░реНрдпреЛрдВ) рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рднреА рд╕реАрдорд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдордп, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ, рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рдирд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпреЗ рдШрдЯрдирд╛рдПрдБ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдпрд╛ рд╕реНрдерд┐рддрд┐ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд╛рдкрддреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд
рдпрджрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рд╡рд┐рднрд╛рдЬрди
рдкрд╛рд▓рди тАЛтАЛрдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд┐рджреНрдзрд╛рдВрдд
рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдЭрд╛рдХрд░рдг рд╣реИ ред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ
рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдпрд╛
рдлреНрд░реИрдЧрдореЗрдВрдЯ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдЗрди рд╡рд░реНрдЧреЛрдВ
(рдПрд╕рдЖрд░рдкреА) рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рдХреЗ, рдЖрдк рдЖрд╡реЗрджрди рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реЗ рдЬреБрдбрд╝реА рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдореЙрдбрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рдпрдВрддреНрд░рдг
рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ
рдПрдХ рдореЙрдбрд▓ рд╕реЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ
рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдзрд┐рдорд╛рдирддрдГ рдПрдХ рд╕реНрдерд╛рдпреА рдореЙрдбрд▓ рд╕реЗред рдореЙрдбрд▓ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рд╡реЗ
рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШрдЯрдХреЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рд╡реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рди рдЪрдХреНрд░ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рд╕реНрдерд╛рдпреА рдореЙрдбрд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЖрджрд░реНрд╢ рд╣реИ:
- рдпрджрд┐ Android OS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдЦреЛрдПрдВрдЧреЗред
- рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдЕрд╕реНрдерд┐рд░ рдпрд╛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдиреАрдВрд╡ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдФрд░ рд╕рдорд░реНрдерд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
рдпрд╣ рдЦрдВрдб рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ
рдПрдВрдб- рдЯреВ-
рдПрдВрдб рдпреВрд╕реЗрдЬ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛
рд╣реИ ред
рдиреЛрдЯред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓реЗрдЦрди рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПредрдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдирд┐рдЬреА API рдФрд░ REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреИрдпрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реНрдХреАрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗрд╡рд▓ рдШрдЯрдХ рдПрдХ рд╕реНрддрд░ рд╕реЗ рдиреАрдЪреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдХреЗрд╡рд▓ рджреГрд╢реНрдп рдореЙрдбрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдХрдИ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ; рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рднрдВрдбрд╛рд░рдг рдПрдХ рд╕рддрдд рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рдПрдХ рджреВрд░рд╕реНрде рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдПрдХ рд╕реБрд╕рдВрдЧрдд рдФрд░ рд╕реБрдЦрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдорд┐рдирдЯ рдмрд╛рдж рдпрд╛ рдХреБрдЫ рджрд┐рдиреЛрдВ рдмрд╛рдж рдЖрд╡реЗрджрди рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдЧрд╛ рдХрд┐ рдЖрд╡реЗрджрди рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдкреБрд░рд╛рдирд╛ рд╣реИ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЛрд░реЗрдЬ рдореЙрдбреНрдпреВрд▓ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдБ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ
UserProfileFragment
рдЯреБрдХрдбрд╝рд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд
user_profile_layout.xml
рд▓реЗрдЖрдЙрдЯ
user_profile_layout.xml
ред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рддрддреНрд╡ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреАред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЯреБрдХрдбрд╝реЗ рдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдЧрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдУрдПрд╕ рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реЗрдЬ рд▓реА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдо рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ рддреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ: рдПрдХ рдбреЗрдЯрд╛ рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред
рд╣рдо рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ViewModel рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ
UserProfileViewModel
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
ViewModel рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХ, рдЬреИрд╕реЗ рдЯреБрдХрдбрд╝рд╛ рдпрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ViewModel рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред ViewModel рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдШреБрдорд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛редрдЕрдм рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рд╣реИ:
user_profile.xml
: рдкрд░рд┐рднрд╛рд╖рд┐рдд рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓реЗрдЖрдЙрдЯредUserProfileFragment
: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИредUserProfileViewModel
: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдкреНрд░реЛрдлрд╛рдЗрд▓рдлреНрд░реИрдЧрдореЗрдВрдЯ рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рд░реНрдЧред
рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред (рд▓реЗрдЖрдЙрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред)
class UserProfileViewModel : ViewModel() { val userId : String = TODO() val user : User = TODO() } class UserProfileFragment : Fragment() { private val viewModel: UserProfileViewModel by viewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { return inflater.inflate(R.layout.main_fragment, container, false) } }
рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреЗ рдХреЛрдб рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ? рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реАрд▓реНрдб UserProfileViewModel рд╡рд░реНрдЧ рдореЗрдВ рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред
рдиреЛрдЯред SavedStateHandle ViewModel рдХреЛ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рдВрдмрджреНрдз рдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯ рдпрд╛ рдХреНрд░рд┐рдпрд╛ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдлреНрд░реИрдЧрдореЗрдВрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ LiveData рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдШрдЯрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
LiveData рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдбреЗрдЯрд╛ рдзрд╛рд░рдХ рд╣реИред рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреНрдп рдШрдЯрдХ рдЗрд╕ рдзрд╛рд░рдХ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдХрдард┐рди рдкрде рдмрдирд╛рдП рдмрд┐рдирд╛ред LiveData рдШрдЯрдХ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдШрдЯрдХреЛрдВ рдХреА рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХреНрд░рд┐рдпрд╛рдПрдБ, рдЯреБрдХрдбрд╝реЗ, рдФрд░ рд╕реЗрд╡рд╛рдПрдБ, рдФрд░ рдЗрд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рд╕рд╛рд╡ рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓реАрдирдЕрдк рд▓реЙрдЬрд┐рдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдиреЛрдЯред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА RxJava рдпрд╛ Agera рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк LiveData рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЬрдм рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрдлрд╝рд╕рд╛рдЗрдХрд▓рд░ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЬрдм рд╕рдВрдмрджреНрдз рд▓рд╛рдЗрдлрд╝ рд╕рд╛рдЗрдХрд▓рд░ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рддреЛ рдЗрди рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдВред рдЖрдк рдЖрд░реНрдЯрд╡рд░реНрдХ android.arch.lifecycle: рдЬреЗрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ RxJava2 рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЬреЗрдЯ рд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде LiveData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВредрдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ LiveData рдШрдЯрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо UserDrofileViewModel рдореЗрдВ LiveData рдореЗрдВ рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВред
UserProfileFragment
рдЕрдм рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛
UserProfileFragment
ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдпрд╣
LiveData рдлрд╝реАрд▓реНрдб рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
class UserProfileViewModel( savedStateHandle: SavedStateHandle ) : ViewModel() { val userId : String = savedStateHandle["uid"] ?: throw IllegalArgumentException("missing user id") val user : LiveData<User> = TODO() }
рдЕрдм рд╣рдо
ViewModel
рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
UserProfileFragment
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewModel.user.observe(viewLifecycleOwner) {
рд╣рд░ рдмрд╛рд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
рдСрдирдЪреЗрдВрдЬ () рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛ рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝реЗ рдХреЗ
onStop () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЪрд░рдг LiveData рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣
onChanged()
рдХреЙрд▓рдмреИрдХ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЯреБрдХрдбрд╝рд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИ; рдпрд╣реА рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ
onStart () рдХреЛ рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ
onStop()
) рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред LiveData рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдЬрдм рдЯреБрдХрдбрд╝реЗ рдкрд░
onDestroy () рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИред
рд╣рдордиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдХреНрд░реАрди рдХреЛ рдШреБрдорд╛рдпрд╛ рдЬрд╛рдирд╛ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдиреЗ рдкрд░
UserProfileViewModel
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреИрд╕реЗ рд╣реА рдПрдХ рдирдпрд╛ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╛рди
ViewModel
рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреБрд░рдВрдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐
ViewModel
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрдмрдВрдзрд┐рдд
View
рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ ViewModel рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ
View
рд▓рд┐рдП рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
ViewModel
рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП
ViewModel
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ,
ViewModel рдЬреАрд╡рди рдЪрдХреНрд░ рджреЗрдЦреЗрдВредрдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐
рдЕрдм рдЬрдм рд╣рдордиреЗ
UserProfileViewModel
рдХреЛ
UserProfileFragment
рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LiveData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдмреИрдХрдПрдВрдб рдПрдХ REST API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдмреИрдХрдПрдВрдб рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдЯреНрд░реЛрдлрд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдПрдХ рд╣реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдПрдХ
Webservice
рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИ:
interface Webservice { @GET("/users/{user}") fun getUser(@Path("user") userId: String): Call<User> }
ViewModel
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Webservice
рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╣рдорд╛рд░реА
LiveData
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣
UserProfileViewModel
рд╡рд░реНрдЧ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рджреЗрддрд╛ рд╣реИ, рдЬреЛ
рд╣рд┐рддреЛрдВ рдХреЗ
рдкреГрдердХреНрдХрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ViewModel рдХрд╛ рджрд╛рдпрд░рд╛
рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдпрд╛
рдлреНрд░реИрдЧрдореЗрдВрдЯ рд▓рд╛рдЗрдл рд╕рд╛рдЗрдХрд▓ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░
Webservice
рдбреЗрдЯрд╛ рдЦреЛ
Webservice
рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░рд╛
ViewModel
рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдирдП рд╕рдВрдЧреНрд░рд╣рдг рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЙрдбреНрдпреВрд▓ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рд╡реЗ рдПрдХ рд╕рд╛рдл рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмрд╛рдХреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдпрд╣ рдбреЗрдЯрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рд╕рдХреЗред рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХрд╣рд╛рдБ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ, рдЬреИрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдореЙрдбрд▓, рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХреИрд╢ рдХреЗ рдмреАрдЪ рдмрд┐рдЪреМрд▓рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВредрд╣рдорд╛рд░рд╛
UserRepository
рд╡рд░реНрдЧ, рдЬреЛ рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
WebService
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
class UserRepository { private val webservice: Webservice = TODO()
рдпрджреНрдпрдкрд┐ рднрдВрдбрд╛рд░рдг рдореЙрдбреНрдпреВрд▓ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ
UserProfileViewModel
рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрддрд┐ рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреЛрдЯред рд╣рдордиреЗ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрдерд┐рддрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рд╢рд┐рд╖реНрдЯ: рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рддрд┐ рдкреНрд░рдХрдЯреАрдХрд░рдг рджреЗрдЦреЗрдВред
рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрдирдЙрдкрдпреЛрдХреНрддрд╛
UserRepository
рд╡рд░реНрдЧ рдЙрдкрдпреЛрдХреНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Webservice
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рд┐рдПред рд╡рд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ
Webservice
рд╡рд░реНрдЧ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рднреА рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
UserRepository
рд╢рд╛рдпрдж рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЛрдб рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рд╡рд░реНрдЧ рдЬрд┐рд╕реЗ
Webservice
рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд╕реЗ рдФрд░ рдЙрд╕рдХреЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдПрдХ рдирдпрд╛
WebService
рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рд╕рдВрд╕рд╛рдзрди рдЧрд╣рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (DI) ред рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рдмрд┐рдирд╛ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд░рди рдЯрд╛рдЗрдо рдореЗрдВ, рдПрдХ рдФрд░ рд╡рд░реНрдЧ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдо Android рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреИрдЧрд░ 2 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рдбреИрдЧрд░ 2 рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рддрд╛ рд╣реИ, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- (рд╕реЗрд╡рд╛ рд╕реНрдерд╛рди) рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░: рд╕реЗрд╡рд╛ рд▓реЛрдХреЗрдЯрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдПрдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред
DI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реЗрд╡рд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк DI рдореЗрдВ рдирдП рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕реЗрд╡рд╛ рд╕реНрдерд╛рдиред
рдпреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреЛрдб рдХреА рдирдХрд▓ рдпрд╛ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдирдореВрдиреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрддреНрдкрд╛рджрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░рд╛ рдирдореВрдирд╛ рдЖрд╡реЗрджрди
рд╡реЗрдмрд░ рд╕реЗрд╡рд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдбреИрдЧрд░ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдХрдиреЗрдХреНрдЯ ViewModel рдФрд░ рд╕рдВрдЧреНрд░рд╣рдг
рдЕрдм рд╣рдо
UserRepository
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ
UserProfileViewModel
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
class UserProfileViewModel @Inject constructor( savedStateHandle: SavedStateHandle, userRepository: UserRepository ) : ViewModel() { val userId : String = savedStateHandle["uid"] ?: throw IllegalArgumentException("missing user id") val user : LiveData<User> = userRepository.getUser(userId) }
рдХреИрд╢рд┐рдВрдЧ
UserRepository
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
Webservice
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЛ рдЕрдореВрд░реНрдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИред
UserRepository
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдбреЗрдЯрд╛ рдХрд╣реАрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
UserProfileFragment
рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рд╡реЗ рдмрджрд▓ рдирд╣реАрдВ рдЧрдП рд╣реЛрдВред
рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ:
- рдпрд╣ рдмрд╣реБрдореВрд▓реНрдп рдпрд╛рддрд╛рдпрд╛рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред
- рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдирдП рдЕрдиреБрд░реЛрдз рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрди рдХрдорд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ
UserRepository
рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдореЗрдореЛрд░реА рдореЗрдВ
User
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ:
рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛
рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдпрд╛ рдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдШреБрдорд╛рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ, рддреЛ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреЛрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреИрд╢ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдВрдбреНрд░реЙрдЗрдб рдУрдПрд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдмрд╛рдж рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЫреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдкрдЧреНрд░реЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмреБрд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдмреЗрдХрд╛рд░ рднреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓реНрдпрд╡рд╛рди рдореЛрдмрд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХреА рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред
рдЖрдк рд╡реЗрдм рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирдИ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЙрд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд┐рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп? рдЖрд╡реЗрджрди рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рднреНрд░рдорд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рдПрдХ рдорд┐рддреНрд░ рд╕реВрдЪреА рдЕрдиреБрд░реЛрдз рдФрд░ рдПрдХрд▓-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдХрдХреНрд╖ рд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (DB) рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред
рдХрдорд░рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдореИрдкрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдиреНрдпреВрдирддрдо рдорд╛рдирдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдВрдХрд▓рди рдХреЗ рд╕рдордп, рдпрд╣ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреВрдЯреЗ SQL рдХреНрд╡реЗрд░реА рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХрдЪреНрдЪреЗ рдПрд╕рдХреНрдпреВрдПрд▓ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рд╕реЗ рдХрдХреНрд╖ рд╕рд╛рд░ред рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓рд╛рдЗрд╡рдбрд╛рдЯрд╛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдмрд╛рдзрд╛рдУрдВ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдереНрд░реЗрдбрд┐рдВрдЧ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рднрдВрдбрд╛рд░рдг рддрдХ рдкрд╣реБрдВрдЪред
рдиреЛрдЯред рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ SQLite рдСрдмреНрдЬреЗрдХреНрдЯ рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ (ORM), рддреЛ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдХреЛ рд░реВрдо рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдХреНрд╡реЗрд░реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЕрдореВрд░реНрдд рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВредрдХрдХреНрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд▓реЗрдЖрдЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ
User
рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рдореЗрдВ
@PrimaryKey
рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдХреНрд▓рд╛рд╕
id
рдлреАрд▓реНрдб рдореЗрдВ
@PrimaryKey
рдПрдиреЛрдЯреЗрд╢рди
@PrimaryKey
ред рдпреЗ рдПрдиреЛрдЯреЗрд╢рди рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ
User
рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ
id
рдХрд░рддреЗ рд╣реИрдВ:
@Entity data class User( @PrimaryKey private val id: String, private val name: String, private val lastName: String )
рдлрд┐рд░ рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП
RoomDatabase
рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ:
@Database(entities = [User::class], version = 1) abstract class UserDatabase : RoomDatabase()
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
UserDatabase
рд╕рд╛рд░ рд╣реИред рдХрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП
рдХрдХреНрд╖ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред
рдЕрдм рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдо
рдПрдХ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ (DAO) рдмрдирд╛рддреЗ рд╣реИрдВред
@Dao interface UserDao { @Insert(onConflict = REPLACE) fun save(user: User) @Query("SELECT * FROM user WHERE id = :userId") fun load(userId: String): LiveData<User> }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
load
рд╡рд┐рдзрд┐ LiveData рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреА рд╣реИред рдХрдХреНрд╖ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдм рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рднреА рд╕рдХреНрд░рд┐рдп рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХрдХреНрд╖
LiveData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдСрдкрд░реЗрд╢рди рдХреБрд╢рд▓ рд╣реИ; рдпрд╣ рдбреЗрдЯрд╛ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдХреНрд░рд┐рдп рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╣реЛред
рдиреЛрдЯ: рдЯреЗрдмрд▓ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд░реЗ рдХреА рдЬрд╛рдБрдЪ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИредрд╣рдорд╛рд░реЗ
UserDao
рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд░реНрдЧ рд╕реЗ DAO рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВ:
@Database(entities = [User::class], version = 1) abstract class UserDatabase : RoomDatabase() { abstract fun userDao(): UserDao }
рдЕрдм рд╣рдо рдХрдХреНрд╖ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА
UserRepository
рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╣рдордиреЗ
UserRepository
рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рддрдм рднреА рд╣рдореЗрдВ рдЕрдкрдиреЗ
UserProfileViewModel
рдпрд╛
UserProfileFragment
рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдкрдбреЗрдЯ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рдирдХрд▓реА
UserRepository
рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди
UserProfileViewModel
рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрд░рд╛рдиреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд▓реЗрддреАред рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдкреБрд░рд╛рдиреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк
рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдбрдореА рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдирдХрд╛рд░реА рд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╕рддреНрдп рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕реНрд░реЛрддредрдЖрдорддреМрд░ рдкрд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ REST API рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рдореЗрдВ рдПрдХ рдФрд░ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реИ рдЬреЛ рджреЛрд╕реНрддреЛрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рд╕реЗ рдЖ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрднрд╡рддрдГ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдордиреЗ UserRepository
рдЕрдиреБрд░реЛрдз Webservice
рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд┐рдП рдмрд┐рдирд╛, рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреНрд░рд╛рдордХ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рднрдВрдбрд╛рд░рдг рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░рд╛рд░реВрдк рдЕрдВрддрд┐рдо рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛редрдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди UserRepository
рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рддрдм рд╕рдХреНрд░рд┐рдп LiveData рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рддреНрдп рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ , рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЗ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ UserRepository
ред рднрд▓реЗ рд╣реА рдЖрдк рдбрд┐рд╕реНрдХ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реЛрдВ, рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЖрдкрдХреЗ рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рд╕рддреНрдп рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдиреЗрдВредрдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рдЧрддрд┐ рджрд┐рдЦрд╛рдПрдВ
рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкреБрд▓-рдЯреВ-рд░рд┐рдлреНрд░реЗрд╢, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдСрдкрд░реЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдореЗрдВ рдорд┐рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЙрд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ LiveData рдкрд░ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдлреНрд▓рд╛рдЗрдЯ рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣реЛрдиреЗ рдХрд╛ рддрдереНрдп рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рд╣реИ, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ User
редрдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕рд╣рдордд рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рдгрдиреАрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдЕрдиреБрд░реЛрдз рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реЛ:рд╣рд┐рддреЛрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдкрд░ рдЦрдВрдб рдореЗрдВ, рд╣рдордиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рд▓рд╛рдн рдкрд░реАрдХреНрд╖рдгрдиреАрдпрддрд╛ рд╣реИредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ:- рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЗрдВрдЯрд░реЗрдХреНрд╢рди : рдПрдВрдбреНрд░реЙрдЗрдб рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдПрд╕реНрдкреНрд░реЗрд╕реЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ред рдЖрдк рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
UserProfileViewModel
ред рдЪреВрдВрдХрд┐ рдЯреБрдХрдбрд╝рд╛ рдХреЗрд╡рд▓ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ UserProfileViewModel
, рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдордЬрд╛рдХ (рдирдХрд▓) рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред - ViewModel:
UserProfileViewModel
JUnit . , UserRepository
. - UserRepository:
UserRepository
JUnit. Webservice
UserDao
. :
Webservice
, UserDao
, .- UserDao: DAO . - , . , , , тАж
: Room , DAO, JSQL SupportSQLiteOpenHelper . , SQLite SQLite . - -: . , -, . , MockWebServer , .
- : maven .
androidx.arch.core
: JUnit:
InstantTaskExecutorRule:
.CountingTaskExecutorRule:
. Espresso .
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рдпрд╣ рдХрдИ рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛, рд╣рдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдСрдлрд╝рд▓рд╛рдЗрди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рдпрд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИредрд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд╢рдВрд╕рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЗ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдмрдирд╛рддрд╛ рд╣реИ:рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБрдУрдВ рдЬреИрд╕реЗ - рдХреНрд░рд┐рдпрд╛рдУрдВ, рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рд░рд┐рд╕реАрд╡рд░ - рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВредрдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд╕рдмрд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдмрд╛рддрдЪреАрдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП, рдХрд╛рдлреА рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╣реИредрдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреА рд╕реНрдкрд╖реНрдЯ рд░реЗрдЦрд╛рдПрдВ рдмрдирд╛рдПрдВредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдпрд╛ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рди рдХрд░реЗрдВред рдЗрд╕реА рддрд░рд╣, рдХрдИ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░реЗрдВ - рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ - рдПрдХ рд╣реА рдХрдХреНрд╖рд╛ рдореЗрдВредрдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрдо рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд░реЗрдВредрдПрдХ "рд╕рд┐рд░реНрдл рдПрдХ" рд▓реЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдкреНрд░рд▓реЛрднрди рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддрдм рдЖрдкрдХрд╛ рдХреЛрдб рдЖрдзрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЖрдк рдХрдИ рдмрд╛рд░ рддрдХрдиреАрдХреА рдЛрдг рд▓реЗ рд▓реЗрдВрдЧреЗредрдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдкреАрдЖрдИ рд╣реЛрдиреЗ рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдЗрди рджреЛ рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ рдпрд╛ рдкреВрд░реЗ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛрдб рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрд╕рдВрднрд╡ рднреА рдирд╣реАрдВредрдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрджреНрд╡рд┐рддреАрдп рдХреЛрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВредрдмрд╛рд░-рдмрд╛рд░ рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рд▓рд┐рдЦрдХрд░ рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдордЬрдмреВрдд рди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреЗ рд╕рдордп рдФрд░ рдКрд░реНрдЬрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рджреЛрд╣рд░рд╛рдП рдЧрдП рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдШрдЯрдХреЛрдВ рдФрд░ рдЕрдиреНрдп рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рджреЗрдВредрдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдФрд░ рддрд╛рдЬрд╛ рдбреЗрдЯрд╛ рд░рдЦреЗрдВредрдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЙрдирдХрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдСрдлрд╝рд▓рд╛рдЗрди рд╣реЛред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдЧрд╛рддрд╛рд░ рдЙрдЪреНрдЪ рдЧрддрд┐ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВредрдПрдХрд▓ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдХреЗрд╡рд▓ рд╕рд╣реА рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░реЗрдВредрдЬрдм рднреА рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рдХреЗ рдЗрд╕ рдПрдХрд▓ рд╕реНрд░реЛрдд рд╕реЗ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПредрдкрд░рд┐рд╢рд┐рд╖реНрдЯ: рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛
рдЕрдиреБрд╢рдВрд╕рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдмреВрдЯ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИредрдпрд╣ рдЦрдВрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдП, рдЬреЛ рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рджреЛрдиреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИредрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИResource:
рдЪреВрдВрдХрд┐ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЖрдо рдмрд╛рдд рд╣реИ, рдпрд╣ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд┐рд╕реЗ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ NetworkBoundResource
редрдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдгрдп рдЯреНрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ NetworkBoundResource
:
рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджреЗрдЦрдХрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдкрд╣рд▓реА рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ NetworkBoundResource
рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЙрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдПрдХ рд╕рд╛рде рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рд╕рдВрднрд╡рддрдГ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдХреИрд╢реНрдб рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрдпрджрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз NetworkBoundResource
рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рд╕реАрдзреЗ рднреЗрдЬрддрд╛ рд╣реИред. . , .
рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рддрдм рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рди рднреЗрдЬреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рддреНрдп рдХреЗ рдПрдХрд▓ рд╕реНрд░реЛрдд рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░реНрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣, рдирдП рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛ `SUCCESS` рди рднреЗрдЬреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдЧрд▓рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛редрдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ NetworkBoundResource
рдЕрдкрдиреЗ рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЦреБрд▓реА рдПрдкреАрдЖрдИ рджрд┐рдЦрд╛рддрд╛ рд╣реИ :
рдХрдХреНрд╖рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:- рдпрд╣ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ,
ResultType
рдФрд░ RequestType
рдЪреВрдВрдХрд┐ рдПрдкреАрдЖрдИ рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред - рдпрд╣
ApiResponse
рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред ApiResponse
рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЖрд╡рд░рдг Retrofit2.Call
рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ LiveData
ред
рдХрдХреНрд╖рд╛ рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди GitHub Android-Architecture-ComponentsNetworkBoundResource
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ ред рдПрдХ рдмрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣рдорд╛рд░реА рдбрд┐рд╕реНрдХ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :NetworkBoundResource
User
UserRepository