рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛: рдЯрд┐рдкреНрд╕ рдФрд░ рдЯреНрд░рд┐рдХреНрд╕


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

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

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

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

рдХреЛрдЯрд▓рд┐рди рдХреНрдпреЛрдВ?


рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХреЛрдЯрд▓рд┐рди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ "рдЖрд░рд╛рдорджрд╛рдпрдХ рдФрд░ рджрд░реНрдж рд╕реЗ рдкрд░рд┐рдЪрд┐рдд" рдЬрд╛рд╡рд╛ рджреБрдирд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛:

  1. рдкреВрд░реНрдг рдЬрд╛рд╡рд╛ рд╕рдВрдЧрддрддрд╛
  2. рдЕрд╢рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛
  3. рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди
  4. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рддрд░реАрдХреЗ
  5. рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдФрд░ рд▓рдВрдмреЛрджрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп
  6. рдЬреЗрдиреЗрд░рд┐рдХреНрд╕
  7. Coroutines
  8. рдХреЛрдИ рдЬрд╛рдБрдЪ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ

рдбрд┐рд╕реНрдХреЛ рдРрдк


рдпрд╣ рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯ рдХрд╛рд░реНрдб рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП 10 рд╕реНрдХреНрд░реАрди рд╕реЗ рдорд┐рд▓рдХрд░ рдЖрдХрд╛рд░ рдореЗрдВ рдЫреЛрдЯрд╛ рд╣реИред рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреНрд░рд╡рд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реБрдб рдХреЗ рддрд╣рдд Google рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде MVVM рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: ViewModel, LiveData, Roomред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрдХрд▓ рдмреЙрдм рд╕реЗ рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ 3 рдкрд░рддреЗрдВ рдЪреБрдиреАрдВ: рдбреЗрдЯрд╛, рдбреЛрдореЗрди рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ред


рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ? рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЛрдЯрд▓рд┐рди рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд╡рд┐рдЪрд╛рд░ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкреНрд░рд╢реНрди "рдХрд╣рд╛рдБ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ?"ред

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

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

рдкрд░рдд рдкреНрд░рд╡рд╛рд╕рди


рдЪреВрдВрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрддрд░рд┐рдд рд╣реИ, рдпрд╣ рдкрд░рддреЛрдВ рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдКрдкрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рд╡рд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдкрд░рддреЛрдВ рдХрд╛ рдХреНрд░рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:


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

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдУрд╡рд░рд▓реЛрдб рдкреАрдврд╝реА рдХреЛ рджреЗрдЦреЗрдВред

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

class Foo @JvmOverloads constructor(x: Int, y: Double = 0.0) { @JvmOverloads fun f(a: String, b: Int = 0, c: String = "abc") { ... } } 

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

 // Constructors: Foo(int x, double y) Foo(int x) // Methods void f(String a, int b, String c) { } void f(String a, int b) { } void f(String a) { } 

рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬреЗрд╡реАрдПрдо рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рдЬрд╛рд╡рд╛ рд╕реЗ рдХреЛрдЯрд▓рд┐рди рдХреЗ рдХреЙрд▓ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИред

рдЕрдм рд╣рдо рдкрд░рдд рджрд░ рдкрд░рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░рдд


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

1. рдХреИрдкреНрдЯ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░


рдХрд┐рд╕реА рднреА MVVM рдХреЗ рд╕рд╛рде, рд╡реНрдпреВ рдбреЗрдЯрд╛рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ViewModel рдЧреБрдгреЛрдВ рд╕реЗ рдмрдВрдзрд╛ рд╣реИред Android рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо Android Databind рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди рдХрд╛ рдЕрдкрдирд╛ рдПрдиреЛрдЯреЗрд╢рди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИ , рдФрд░ рдпрджрд┐ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдорд╛рдг рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдпреЗ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗ:

 apply plugin: 'kotlin-kapt' android { dataBinding { enabled = true } } dependencies { api fileTree(dir: 'libs', include: ['*.jar']) ///тАж kapt "com.android.databinding:compiler:$android_plugin_version" } 

рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмрд┐рд▓реНрдб.gradle рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рдирдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

2. рдЗрдирд▓рд╛рдЗрди рдХрд╛рд░реНрдп


рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ рдПрдореНрдмреЗрдбреЗрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдиреНрдореВрд▓рди рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдорд┐рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдкреНрд░рдХрд╛рд░ (рд╡рд░реНрдЧ) рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрдЯрд▓рд┐рди рдХреА рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд╡рд░реНрдЧ рдХреЛ "рдирд┐рдХрд╛рд▓рдиреЗ" рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

 inline fun <reified T : Activity> Context?.startActivity(args: Bundle) { this?.let { val intent = Intent(this, T::class.java) intent.putExtras(args) it.startActivity(intent) } } 

reified - рдкрджрдирд╛рдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрджрдирд╛рдоред

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

3. рдПрдХреНрд╕рдЯреЗрдВрд╢рди


рд╡реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИрдВред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдлреВрд▓рд╛ рд╣реБрдЖ рдФрд░ рд░рд╛рдХреНрд╖рд╕реА рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред

рдореИрдВ рдЖрд╡реЗрджрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:

 fun Context.inflate(res: Int, parent: ViewGroup? = null): View { return LayoutInflater.from(this).inflate(res, parent, false) } fun <T> Collection<T>?.isNotNullOrEmpty(): Boolean { return this != null && isNotEmpty(); } fun Fragment.hideKeyboard() { view?.let { hideKeyboard(activity, it.windowToken) } } 

рдХреЛрдЯрд▓рд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЕрдкрдиреЗ рдХреЛрдЯрд▓рд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд▓рдЧрдЗрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдХреЗ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдПрдВрдбреНрд░реЙрдЗрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ View рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ Parcelable рд╕рдорд░реНрдерди рд╣реИред рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред

4. рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЙрдЪреНрдЪ рдХреНрд░рдо рдлрд╝рдВрдХреНрд╢рди


рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рдореЗрдВ рд▓реИрдореНрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЕрдирд╛рдбрд╝реА ClickListener рдФрд░ рдХреЙрд▓рдмреИрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

OnClickListener рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 button.setOnClickListener({ doSomething() }) 

рд▓реЗрдореНрдмрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдЧреНрд░рд╣ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рд▓реЗрдВ:

 fun <T, R> List<T>.map(transform: (T) -> R): List<R> {...} 

рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рдж рдХреЗ рдирд┐рд╖реНрдХрд╛рд╕рди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рдХреА рдЖрдИрдбреА "рдореИрдк" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

  val ids = cards.map { it.id }.toIntArray() cardDao.deleteCardsByIds(ids) 

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

5. рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдкреНрд░рдХрд╛рд░


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

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


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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ onActivityResult рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ:

 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent{ super.onActivityResult(requestCode, resultCode, data) val randomString = data.getStringExtra("some_string") } 

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрджреНрднрд╡ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. Service.onStartCommand (), рдЬрд╣рд╛рдВ рдЖрд╢рдп рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  2. рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд╕реАрд╡рд░.рдСрдирд░реНрд╕рд┐рд╡ ()ред
  3. Activity.onCreate (), Fragment.onViewCreate () рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗред

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

рдбреЛрдореЗрди рдкрд░рдд


рдЗрд╕ рдкрд░рдд рдореЗрдВ рд╕рднреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдпрд╣ рдбреЗрдЯрд╛ рдкрд░рдд рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░рдд рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЦреНрдп рднреВрдорд┐рдХрд╛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рджреНрд╡рд╛рд░рд╛ рдирд┐рднрд╛рдИ рдЬрд╛рддреА рд╣реИред рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ, рд╣рдо рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдФрд░ рд▓реЛрдХрд▓, рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВред рдКрдкрд░, рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░рдд рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдбреЗрдЯрд╛ рдСрдкрд░реЗрд╢рди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, RxJava рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

1. RxJava


Kotlin RxJava рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣рд╛рдБ рднреА рдореБрдЭреЗ рдПрдХ рдЕрдкреНрд░рд┐рдп рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рдПрдХ рд▓реИрдореНрдмрдбрд╛ рдХреЛ .Then рд╡рд┐рдзрд┐ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓реИрдореНрдмрдбрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛!

рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ:

 Completable .fromCallable { cardRepository.uploadDataToServer() } .andThen { cardRepository.markLocalDataAsSynced() } .subscribe() 

AndThen рд╕рд╛рдордЧреНрд░реА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА ред рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдкрд░реЗрдЯрд░реЛрдВ (рдЬреИрд╕реЗ рдлреНрд▓реИрдЯрдкрд╛рдЗрдк , рдбреЗрдлрд░ , рдлреНрд░реИрдХреНрд╢рди рдФрд░ рдХрдИ рдЕрдиреНрдп) рдХреЗ рд╕рд╛рде рдорд╛рдорд▓рд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдВрдмреЛ рдХреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде, рддрдм , рдХрдореНрдкреНрд▓реАрдЯреЗрдмрд▓ / рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ / рд╕рд┐рдВрдЧрд▓рд╕реЛрд░реНрд╕ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ ред рдШреБрдВрдШрд░рд╛рд▓реЗ {} рдХреЗ рдмрдЬрд╛рдп рд╕рд╛рдзрд╛рд░рдг рдХреЛрд╖реНрдардХ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ "рдХреЛрдЯрд▓рд┐рди рдФрд░ рдЖрд░рдПрдХреНрд╕ 2" рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЧрд▓рдд рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдХрд╛рд░рдг рдореИрдВрдиреЗ 5 рдШрдВрдЯреЗ рдХреИрд╕реЗ рдмрд░реНрдмрд╛рдж рдХрд┐рдП ред тАЭ

2. рдкреБрдирд░реНрдЧрдарди


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

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдХрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓реМрдЯрд╛рддреА рд╣реИ:

 @GET("/foo/api/sync") fun getBrandsAndCards(): Single<BrandAndCardResponse> data class BrandAndCardResponse(@SerializedName("cards") val cards: List<Card>?, @SerializedName("brands") val brands: List<Brand>?) 

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

 syncRepository.getBrandsAndCards() .flatMapCompletable {it-> Completable.fromAction{ val (cards, brands) = it syncCards(cards) syncBrands(brands) } } } 

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

 val cards = it.component1() val brands = it.component2() 

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

рд╣рдо рдбреЗрдЯрд╛ рд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдбреЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдбреЗрдЯрд╛ рд▓реЗрдпрд░


рдЗрд╕ рдкрд░рдд рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рдЖрдзрд╛рд░ рдХреЗ рд▓рд┐рдП POJO рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ред

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

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

 data class Card(val id:String, val cardNumber:String, val brandId:String,val barCode:String) 

рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

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

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

    рдПрдХ рдЙрджрд╛рд╣рд░рдг:

     data class Card(val id : Long = 0L, val cardNumber: String="99", val barcode: String = "", var brandId: String="1") val newCard = Card(id =1L,cardNumber = "123") 

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

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

рдХрд┐рддрд╛рдмреЗрдВ, рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ, рд╕рдВрд╕рд╛рдзрди


  1. рднрд╛рд╖рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХрд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЖрдзрд╛рд░ рдХреЛрдЯрд▓рд┐рди рдХреЛ рдПрдХреНрд╢рди рдореЗрдВ рднрд╛рд╖рд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рд╕реНрд╡реЗрддрд▓рд╛рдирд╛ рдЗрд╕рд╛рдХреЛрд╡рд╛ рдФрд░ рджрд┐рдорд┐рддреНрд░реА рдЭреЗрдорд░реЛрд╡ рд╕реЗ рдкреБрд╕реНрддрдХ рдХреЛ рдмрд┐рдЫрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

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

Source: https://habr.com/ru/post/hi433074/


All Articles