рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рд╕рд░реНрд╡ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдореЛрдмрд╛рдИрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНтАНрдпреЗ рдЬрд▓рдж рд▓рд╛рдБрдЪ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдгрд╛рд░реЗ UI рдЧреГрд╣реАрдд рдзрд░рддрд╛рдд. рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдБрдЪ рд╣реЛрдгреНрдпрд╛рд╕ рдмрд░рд╛рдЪ рд╡реЗрд│ рд▓рд╛рдЧрд▓реНрдпрд╛рд╕, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рджреБрдГрдЦ рдЖрдгрд┐ рд░рд╛рдЧ рдпреЗрдК рд▓рд╛рдЧрддреЛ. рддреБрдореНрд╣реА рдЧреНрд░рд╛рд╣рдХрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рд╕рд╣рдЬрдкрдгреЗ рдЦрд░рд╛рдм рдХрд░реВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реАрдЪ рддреЛ рдкреВрд░реНрдгрдкрдгреЗ рдЧрдорд╛рд╡реВ рд╢рдХрддрд╛.

рдЖрдореНрд╣реА рдПрдХрджрд╛ рд╢реЛрдзреВрди рдХрд╛рдврд▓реЗ рдХреА рдбреЛрдбреЛ рдкрд┐рдЭреНрдЭрд╛ рдЕреЕрдк рд▓рд╛ рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░рд╛рд╕рд░реА 3 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд рдЖрдгрд┐ рдХрд╛рд╣реА "рднрд╛рдЧреНрдпрд╡рд╛рдирд╛рдВрд╕рд╛рдареА" 15-20 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд.

рдХрдЯрдЪреНрдпрд╛ рдЦрд╛рд▓реА рдПрдХ рдЖрдирдВрджреА рд╢реЗрд╡рдЯ рдЕрд╕рд▓реЗрд▓реА рдПрдХ рдХрдерд╛ рдЖрд╣реЗ: рдХреНрд╖реЗрддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рд╡рд╛рдвреАрдмрджреНрджрд▓, рдореЗрдорд░реА рд▓реАрдХ, рдЖрдореНрд╣реА рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреВ рдХрд╢рд╛ рдЬрдорд╛ рдХреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдирдВрддрд░ рд╕реНрд╡рддрдГрд▓рд╛ рдПрдХрддреНрд░ рдЦреЗрдЪрд▓реЗ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛
рд▓реЗрдЦ рд▓реЗрдЦрдХ: рдореЕрдХреНрд╕рд┐рдо рдХрд╛рдЪрд┐рдирдХрд┐рди - рдбреЛрдбреЛ рдкрд┐рдЭреНрдЭрд╛ рдпреЗрдереЗ Android рд╡рд┐рдХрд╕рдХ.

рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдпрдХреЙрдирд╡рд░ рдХреНрд▓рд┐рдХ рдХреЗрд▓реНрдпрд╛рдкрд╛рд╕реВрди рдСрдирд░реЗрдЭреНрдпреБрдо() рдкрд░реНрдпрдВрдд рдкрд╣рд┐рд▓реНрдпрд╛ рдНрдХреНрдЯрд┐рд╡реНрд╣рд┐рдЯреАрдЪрд╛ рддреАрди рд╕реЗрдХрдВрдж рдореНрд╣рдгрдЬреЗ рдЕрдирдВрдд. рдЖрдгрд┐ рдХрд╛рд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ 15-20 рд╕реЗрдХрдВрджрд╛рдВрдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрд▓рд╛. рд╣реЗ рддрд░реА рдХрд╕реЗ рд╢рдХреНрдп рдЖрд╣реЗ?

рдЬреНрдпрд╛рдВрдирд╛ рд╡рд╛рдЪрд╛рдпрд▓рд╛ рд╡реЗрд│ рдирд╛рд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЫреЛрдЯрд╛рд╕рд╛ рд╕рд╛рд░рд╛рдВрд╢
рдЖрдордЪрд╛ рдХреНрд╖реЗрддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╡рд┐рд░рддрдкрдгреЗ рд╡рд╛рдврд▓рд╛. рдХрд╛рд╣реА рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреВ рд╣рдЯрд╡рд┐рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рд╕рддрдд рдЬрдорд╛ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рд╣рд│реВрд╣рд│реВ рд╡рд╛рдврд▓реА. рдордЧ рдЖрдореНрд╣реА рддреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ, рдЖрдгрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдЪреА рд╡реЗрд│ рд▓рдХреНрд╖реНрдпрд╛рд╡рд░ рдЖрд▓реА - рддреА 1 рд╕реЗрдХрдВрджрд╛рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЭрд╛рд▓реА рдЖрдгрд┐ рдпрд╛рдкреБрдвреЗ рд╡рд╛рдврд▓реА рдирд╛рд╣реА. рд▓реЗрдЦрд╛рдд рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдгрд┐ рджреЛрди рдЙрдкрд╛рдп рдЖрд╣реЗрдд - рдПрдХ рджреНрд░реБрдд рдЖрдгрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп.

рд╕рдорд╕реНрдпреЗрдЪрд╛ рд╢реЛрдз рдЖрдгрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

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

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рддрдГрд▓рд╛ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛ рдХреА рдХрдзреАрдХрдзреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рд╕ рдХрд╛рд╣реА рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд рдЖрдгрд┐ рдирдВрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдЗрддрд░ рд╕рд╣рдХрд╛рд░реНрдпрд╛рдВрдХрдбреВрди рдХрд┐рддреА рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛ рдпрд╛рдмрджреНрджрд▓ рддрдХреНрд░рд╛рд░реА рдРрдХреВ рдпреЗрдК рд▓рд╛рдЧрд▓реНрдпрд╛. рдкрдг рдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреА рд╕рд╛рддрддреНрдпрд╛рдиреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА.

рдХрд┐рддреА рд╡реЗрд│ рдЖрд╣реЗ? рддреНрдпрд╛рдиреБрд╕рд╛рд░ Google рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг, рдЬрд░ рдПрдЦрд╛рджреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯрд▓рд╛ 5 рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдХрдореА рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛, рддрд░ рд╣реЗ "рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ" рдорд╛рдирд▓реЗ рдЬрд╛рддреЗ. рдбреЛрдбреЛ рдкрд┐рдЭреНрдЭрд╛ рдЕрдБрдбреНрд░реЙрдЗрдб рдЕреЕрдк рд▓рд╛рдБрдЪ рдХреЗрд▓реЗ (рдлрд╛рдпрд░рдмреЗрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдиреБрд╕рд╛рд░ _app_start) рдпреЗрдереЗ рдердВрдб рд╕реБрд░реБрд╡рд╛рдд рд╕рд░рд╛рд╕рд░реА 3 рд╕реЗрдХрдВрджрд╛рдд - "рдорд╣рд╛рди рдирд╛рд╣реА, рднрдпрдВрдХрд░ рдирд╛рд╣реА," рдЬрд╕реЗ рддреЗ рдореНрд╣рдгрддрд╛рдд.

рдкрдг рдирдВрддрд░ рддрдХреНрд░рд╛рд░реА рдпреЗрдК рд▓рд╛рдЧрд▓реНрдпрд╛ рдХреА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╡реНрд╣рд╛рдпрд▓рд╛ рдЦреВрдк, рдЦреВрдк, рдЦреВрдк рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛! рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЖрдореНрд╣реА "рдЦреВрдк, рдЦреВрдк, рдЦреВрдк рд▓рд╛рдВрдм" рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рдореЛрдЬрд╛рдпрдЪреЗ рдард░рд╡рд▓реЗ. рдЖрдгрд┐ рдЖрдореНрд╣реА рдпрд╛рд╕рд╛рдареА рдлрд╛рдпрд░рдмреЗрд╕ рдЯреНрд░реЗрд╕ рд╡рд╛рдкрд░рд▓рд╛ рдЕреЕрдк рдкреНрд░рд╛рд░рдВрдн рдЯреНрд░реЗрд╕.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рд╣рд╛ рд╕реНрдЯрдБрдбрд░реНрдб рдЯреНрд░реЗрд╕ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдШрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдгрд╛рдкрд╛рд╕реВрди рдЖрдгрд┐ рдкрд╣рд┐рд▓реНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдЪрд╛ onResume() рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдгрд╛рджрд░рдореНрдпрд╛рдирдЪрд╛ рд╡реЗрд│ рдореЛрдЬрддреЛ. рдлрд╛рдпрд░рдмреЗрд╕ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдпрд╛ рдореЗрдЯреНрд░рд┐рдХрд▓рд╛ _app_start рдореНрд╣рдгрддрд╛рдд. рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА:

  • 95 рд╡реНрдпрд╛ рдкрд░реНрд╕реЗрдВрдЯрд╛рдЗрд▓рдЪреНрдпрд╛ рд╡рд░реАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ рдЬрд╡рд│рдкрд╛рд╕ 20 рд╕реЗрдХрдВрдж (рдХрд╛рд╣реА рдЬрд╛рд╕реНрдд рдЬрд╛рд╕реНрдд) рдЖрд╣реЗ, рдордзреНрдпрдо рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ 5 рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдХрдореА рдЕрд╕реВрдирд╣реА.
  • рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ рд╣реЗ рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдирд╕рддреЗ, рдкрд░рдВрддреБ рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рд╡рд╛рдврддреЗ. рдкрд░рдВрддреБ рдХрдзреАрдХрдзреА рдереЗрдВрдм рдЕрд╕рддрд╛рдд. рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рдЪреЗ рдкреНрд░рдорд╛рдг 90 рджрд┐рд╡рд╕рд╛рдВрдкрд░реНрдпрдВрдд рд╡рд╛рдврд╡рд▓реЗ тАЛтАЛрддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдирдореБрдирд╛ рдЖрдврд│рд▓рд╛.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рдордирд╛рдд рджреЛрди рд╡рд┐рдЪрд╛рд░ рдЖрд▓реЗ:

  1. рдХрд╛рд╣реАрддрд░реА рдЧрд│рдд рдЖрд╣реЗ.
  2. рд╣реЗ "рдХрд╛рд╣реАрддрд░реА" рд░рд┐рд▓реАрдЭ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рд░реАрд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдирдВрддрд░ рдкреБрдиреНрд╣рд╛ рд▓реАрдХ рд╣реЛрддреЗ.

"рдХрджрд╛рдЪрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХрд╛рд╣реАрддрд░реА," рдЖрдореНрд╣реА рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ рдЖрдореНрд╣реА рдмрд░реЛрдмрд░ рд╣реЛрддреЛ. рдкреНрд░рдердо, рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЕрд╢реЗ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рддреЛ; рд╕реНрдерд▓рд╛рдВрддрд░ рджрд░рдореНрдпрд╛рди рдЖрдореНрд╣реА рддреЗ рд╕рд╛рдл рдХрд░рддреЛ. рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдЬреЗрд╡реНрд╣рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реВ рд╣реЛрддреЛ рддреЗрд╡реНрд╣рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдПрдХрддреНрд░ рдмрд╕рддреЗ.

Realm рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдХрд╛рдп рдЪреВрдХ рдЖрд╣реЗ

рдЖрдореНрд╣реА рдкреНрд░рдердо рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рдирдкрд╛рд╕реВрди рдЖрдгрд┐ рд╕рдХреНрд░рд┐рдп рд╡рд╛рдкрд░рд╛рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдЬреАрд╡рдирд╛рдд рдХрд╢реА рдмрджрд▓рддреЗ рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рддреБрдореНрд╣реА Realm рдбреЗрдЯрд╛рдмреЗрд╕рдЪреА рд╕рд╛рдордЧреНрд░реА рджреНрд╡рд╛рд░реЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рд╕реНрдЯреЗрдереЛ рдХрд┐рдВрд╡рд╛ рджреНрд╡рд╛рд░реЗ рдлрд╛рдЗрд▓ рдЙрдШрдбреВрди рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдХреНрд╖реЗрддреНрд░ рд╕реНрдЯреБрдбрд┐рдУ. ADB рджреНрд╡рд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА, Realm рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╛рдЗрд▓ рдХреЙрдкреА рдХрд░рд╛:

adb exec-out run-as ${PACKAGE_NAME} cat files/${DB_NAME}

рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡реЗрд│реА рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдврд│рд▓реЗ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╡рд╕реНрддреВрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╕рддрдд рд╡рд╛рдврдд рдЖрд╣реЗ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛
рдЪрд┐рддреНрд░ рджреЛрди рдлрд╛рдЗрд▓реНрд╕рд╕рд╛рдареА Realm Studio рдЪрд╛ рдПрдХ рддреБрдХрдбрд╛ рджрд░реНрд╢рд╡рд┐рддреЛ: рдбрд╛рд╡реАрдХрдбреЗ - рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдмреЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирдВрддрд░ рдХрд╛рд╣реА рд╡реЗрд│рд╛рдиреЗ, рдЙрдЬрд╡реАрдХрдбреЗ - рд╕рдХреНрд░рд┐рдп рд╡рд╛рдкрд░рд╛рдирдВрддрд░. рд╣реЗ рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХреА рд╡рд╕реНрддреВрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ ImageEntity ╨╕ MoneyType рд▓рдХреНрд╖рдгреАрдп рд╡рд╛рдв рдЭрд╛рд▓реА рдЖрд╣реЗ (рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╡рд╕реНрддреВрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рджрд░реНрд╢рд╡рд┐рддреЛ).

рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдв рдЖрдгрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ рджрд░рдореНрдпрд╛рди рд╕рдВрдмрдВрдз

рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдв рдЦреВрдк рд╡рд╛рдИрдЯ рдЖрд╣реЗ. рдкрдг рдпрд╛рдЪрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│реЗрд╡рд░ рдХрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЛ? ActivityManager рджреНрд╡рд╛рд░реЗ рд╣реЗ рдореЛрдЬрдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. Android 4.4 рдкрд╛рд╕реВрди, logcat рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдгрд┐ рд╡реЗрд│реЗрд╕рд╣ рд▓реЙрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ. рд╣реА рд╡реЗрд│ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдБрдЪ рдЭрд╛рд▓реНрдпрд╛рдкрд╛рд╕реВрди рдЕтАНреЕрдХреНрдЯрд┐рд╡реНрд╣рд┐рдЯреА рд░реЗрдВрдбрд░рд┐рдВрдЧрдЪреНрдпрд╛ рд╕рдорд╛рдкреНрддреАрдкрд░реНрдпрдВрддрдЪреНрдпрд╛ рдЕрдВрддрд░рд╛рдЪреНрдпрд╛ рдмрд░реЛрдмрд░реАрдЪреА рдЖрд╣реЗ. рдпрд╛ рдХрд╛рд│рд╛рдд рдЦрд╛рд▓реАрд▓ рдШрдЯрдирд╛ рдШрдбрддрд╛рдд:

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реВ рдХрд░рд╛.
  • рд╡рд╕реНрддреВрдВрдЪреЗ рдЖрд░рдВрднреАрдХрд░рдг.
  • рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдВрдЪреА рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рдкреНрд░рд╛рд░рдВрдн.
  • рд▓реЗрдЖрдЙрдЯ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЗ.
  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг.

рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реВрдЯ. рддреБрдореНрд╣реА -S рдЖрдгрд┐ -W рдзреНрд╡рдЬрд╛рдВрд╕рд╣ ADB рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│реЗрд╕рд╣ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд│рд╡реВ рд╢рдХрддрд╛:

adb shell am start -S -W ru.dodopizza.app/.MainActivity -c android.intent.category.LAUNCHER -a android.intent.action.MAIN

рддрд┐рдереВрди рд╣рд┐рд╕рдХрд╛рд╡реВрди рдШреЗрддрд▓реНрдпрд╛рд╕ grep -i WaitTime рд╡реЗрд│, рдЖрдкрдг рдпрд╛ рдореЗрдЯреНрд░рд┐рдХрдЪреЗ рд╕рдВрдХрд▓рди рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдкрд░рд┐рдгрд╛рдо рджреГрд╢реНрдпрдорд╛рдирдкрдгреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛. рдЦрд╛рд▓реАрд▓ рдЖрд▓реЗрдЦ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рджрд╛рдЦрд╡рддреЛ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рдЖрдХрд╛рд░ рдЖрдгрд┐ рд╡рд╛рдв рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╕рдВрдмрдВрдзрд╛рдВрдЪреЗ рд╕рдорд╛рди рд╕реНрд╡рд░реВрдк рд╣реЛрддреЗ, рдЬреЗ 4 рдПрдордмреА рддреЗ 15 рдПрдордмреА рдкрд░реНрдпрдВрдд рд╡рд╛рдврд▓реЗ. рдПрдХреВрдгрдЪ, рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ (рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯрдЪреНрдпрд╛ рд╡рд╛рдвреАрд╕рд╣), рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рдЖрдХрд╛рд░ рджреЛрдиреНрд╣реА рд╡рд╛рдврд▓реЗ. рдЖрдордЪреНрдпрд╛ рд╣рд╛рддрд╛рдд рдПрдХ рдЧреГрд╣рд┐рддрдХ рдЖрд╣реЗ. рдЖрддрд╛ рдлрдХреНрдд рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдЪреА рдкреБрд╖реНрдЯреА рдХрд░рдгреЗ рдмрд╛рдХреА рд╣реЛрддреЗ. рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА "рдЧрд│рддреА" рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ рдЖрдгрд┐ рд╣реЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рд╡реЗрдЧрд╡рд╛рди рдХрд░рддреЗ рдХреА рдирд╛рд╣реА рддреЗ рдкрд╣рд╛.

рдЕрдВрддрд╣реАрди рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдвреАрдЪреА рдХрд╛рд░рдгреЗ

"рдЧрд│рддреА" рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдкреВрд░реНрд╡реА, рддреЗ рдкреНрд░рдердо рд╕реНрдерд╛рдирд╛рд╡рд░ рдХрд╛ рджрд┐рд╕рд▓реЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХреНрд╖реЗрддреНрд░ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрдпрд╛.

рдХреНрд╖реЗрддреНрд░ рд╣рд╛ рдПрдХ рдиреЙрди-рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд╣реЗ. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдордзреАрд▓ рд╕рдВрдмрдВрдзрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬрд╕реЗ рдХреА Android рд╡рд░ рдХрд┐рддреА ORM рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, Realm рдХрдореАрдд рдХрдореА рдЯреНрд░рд╛рдиреНрд╕рдлреЙрд░реНрдореЗрд╢рди рдЖрдгрд┐ рдореЕрдкрд┐рдВрдЧрд╕рд╣ рд╡рд╕реНрддреВ рдереЗрдЯ рдореЗрдорд░реАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЗ. рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдлрд╛рд░ рд▓рд╡рдХрд░ рд╡рд╛рдЪрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, рдЬреА рд░реАрдпрд▓рдордЪреА рддрд╛рдХрдж рдЖрд╣реЗ рдЖрдгрд┐ рддреА рдХрд╛ рдЖрд╡рдбрддреЗ.

(рдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╣реЗрддреВрдВрд╕рд╛рдареА, рд╣реЗ рд╡рд░реНрдгрди рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдкреБрд░реЗрд╕реЗ рдЕрд╕реЗрд▓. рддреБрдореНрд╣реА рдХреВрд▓рдордзреНрдпреЗ рдХреНрд╖реЗрддреНрд░рд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдордзреНрдпреЗ рдЕрдХрд╛рджрдореА).

рдмрд░реНрдпрд╛рдЪ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреА рд╕рд╡рдп рдЖрд╣реЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╣реБрдб рдЕрдВрддрд░реНрдЧрдд SQL рд╕рд╣ ORM рдбреЗрдЯрд╛рдмреЗрд╕). рдЖрдгрд┐ рдХреЕрд╕реНрдХреЗрдбрд┐рдВрдЧ рдбреЗрдЯрд╛ рд╣рдЯрд╡рдгреНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЧреЛрд╖реНрдЯреА рдЕрдиреЗрдХрджрд╛ рджрд┐рд▓реНрдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рджрд┐рд╕рддрд╛рдд. рдкрдг рдХреНрд╖реЗрддреНрд░рд╛рдд рдирд╛рд╣реА.

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

рдХреЕрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╣рдЯрд╡рд┐рд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рдбреЗрдЯрд╛ рд▓реАрдХ

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

@RealmClass
class CartItemEntity(
 @PrimaryKey
 override var id: String? = null,
 ...
 var name: String = "",
 var description: String = "",
 var image: ImageEntity? = null,
 var category: String = MENU_CATEGORY_UNKNOWN_ID,
 var customizationEntity: CustomizationEntity? = null,
 var cartComboProducts: RealmList<CartProductEntity> = RealmList(),
 ...
) : RealmObject()

рдХрд╛рд░реНрдЯрдордзреАрд▓ рдЙрддреНрдкрд╛рджрдирд╛рдордзреНрдпреЗ рдЪрд┐рддреНрд░рд╛рд╕рд╣ рднрд┐рдиреНрди рдлреАрд▓реНрдб рдЖрд╣реЗрдд ImageEntity, рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рд╕рд╛рд╣рд┐рддреНрдп CustomizationEntity. рддрд╕реЗрдЪ, рдХрд╛рд░реНрдЯрдордзреАрд▓ рдЙрддреНрдкрд╛рджрди рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЪрд╛рд╕рд╣ рдХреЙрдореНрдмреЛ рдЕрд╕реВ рд╢рдХрддреЗ RealmList (CartProductEntity). рд╕рд░реНрд╡ рд╕реВрдЪреАрдмрджреНрдз рдлреАрд▓реНрдб рдХреНрд╖реЗрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрд╣реЗрдд. рдЬрд░ рдЖрдкрдг рддреНрдпрд╛рдЪ рдЖрдпрдбреАрд╕рд╣ рдирд╡реАрди рдСрдмреНрдЬреЗрдХреНрдЯ (copyToRealm() / copyToRealmOrUpdate()) рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓рд╛, рддрд░ рд╣рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреВрд░реНрдгрдкрдгреЗ рдУрд╡реНрд╣рд░рд░рд╛рдИрдЯ рд╣реЛрдИрд▓. рдкрд░рдВрддреБ рд╕рд░реНрд╡ рдЕрдВрддрд░реНрдЧрдд рд╡рд╕реНрддреВ (рдЗрдореЗрдЬ, рдХрд╕реНрдЯрдорд╛рдЗрдЬреЗрд╢рди рдПрдВрдЯрд┐рдЯреА рдЖрдгрд┐ рдХрд╛рд░реНрдЯрдХреЙрдореНрдмреЛрдкреНрд░реЙрдбрдХреНрдЯреНрд╕) рдкрд╛рд▓рдХрд╛рдВрд╢реА рдХрдиреЗрдХреНрд╢рди рдЧрдорд╛рд╡рддреАрд▓ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд░рд╛рд╣рддреАрд▓.

рддреНтАНрдпрд╛рдВрдЪреНтАНрдпрд╛рд╢реА рдХрдиреЗрдХреНтАНрд╢рди рддреБрдЯрд▓реНтАНрдпрд╛рдиреЗ, рдЖрдореНтАНрд╣реА рдпрд╛рдкреБрдвреЗ рддреЗ рд╡рд╛рдЪрдгрд╛рд░ рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рд╣рдЯрд╡рдгрд╛рд░ рдирд╛рд╣реА (рдЬреЛрдкрд░реНрдпрдВрдд рдЖрдореНтАНрд╣реА рддреНтАНрдпрд╛рдВрдирд╛ рд╕реНтАНрдкрд╖реНтАНрдЯрдкрдгреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдд рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ рд╕рдВрдкреВрд░реНрдг "рдЯреЗрдмрд▓" рд╕рд╛рдл рдХрд░рдд рдирд╛рд╣реА). рдЖрдореНрд╣реА рдпрд╛рд▓рд╛ "рдореЗрдорд░реА рд▓реАрдХ" рдореНрд╣рдЯрд▓реЗ.

рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА Realm рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рд░реНрд╡ рдШрдЯрдХрд╛рдВрдордзреВрди рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдЕрд╢рд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рдкреВрд░реНрд╡реА рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╣рдЯрд╡рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рд╣реЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдпрд╛рдкреНрд░рдорд╛рдгреЗ:

val entity = realm.where(CartItemEntity::class.java).equalTo("id", id).findFirst()
if (first != null) {
 deleteFromRealm(first.image)
 deleteFromRealm(first.customizationEntity)
 for(cartProductEntity in first.cartComboProducts) {
   deleteFromRealm(cartProductEntity)
 }
 first.deleteFromRealm()
}
// ╨╕ ╨┐╨╛╤В╨╛╨╝ ╤Г╨╢╨╡ ╤Б╨╛╤Е╤А╨░╨╜╤П╨╡╨╝

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

рдЬрд▓рдж рдЙрдкрд╛рдп

рдЖрдореНрд╣реА рдард░рд╡рд▓реЗрд▓реА рдкрд╣рд┐рд▓реА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рд╕рд░реНрд╡рд╛рдд рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврдгрд╛рд░реНтАНрдпрд╛ рд╡рд╕реНрддреВ рд╕реНрд╡рдЪреНрдЫ рдХрд░рдгреЗ рдЖрдгрд┐ рдпрд╛рдореБрд│реЗ рдЖрдордЪреА рдореВрд│ рд╕рдорд╕реНрдпрд╛ рд╕реБрдЯреЗрд▓ рдХрд╛ рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдкрд░рд┐рдгрд╛рдо рддрдкрд╛рд╕рдгреЗ. рдкреНрд░рдердо, рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдЕрдВрддрд░реНрдЬреНрдЮрд╛рдиреА рдЙрдкрд╛рдп рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛, рдореНрд╣рдгрдЬреЗ: рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рддреНрдпрд╛рдЪреНрдпрд╛ рдореБрд▓рд╛рдВрдирд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд╛рд╡рд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕рд╛рджрд░ рдХреЗрд▓рд╛ рдЬреНрдпрд╛рдиреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╖реЗрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреА рд╕реВрдЪреА рдкрд░рдд рдХреЗрд▓реА:

interface NestedEntityAware {
 fun getNestedEntities(): Collection<RealmObject?>
}

рдЖрдгрд┐ рдЖрдореНрд╣реА рддреЗ рдЖрдордЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ:

@RealmClass
class DataPizzeriaEntity(
 @PrimaryKey
 var id: String? = null,
 var name: String? = null,
 var coordinates: CoordinatesEntity? = null,
 var deliverySchedule: ScheduleEntity? = null,
 var restaurantSchedule: ScheduleEntity? = null,
 ...
) : RealmObject(), NestedEntityAware {

 override fun getNestedEntities(): Collection<RealmObject?> {
   return listOf(
       coordinates,
       deliverySchedule,
       restaurantSchedule
   )
 }
}

╨Т getNestedEntities рдЖрдореНрд╣реА рд╕рд░реНрд╡ рдореБрд▓рд╛рдВрдирд╛ рдлреНрд▓реЕрдЯ рд▓рд┐рд╕реНрдЯ рдореНрд╣рдгреВрди рдкрд░рдд рдХрд░рддреЛ. рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рдЗрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ NestedEntityAware рдЗрдВрдЯрд░рдлреЗрд╕ рджреЗрдЦреАрд▓ рдЕрдВрдорд▓рд╛рдд рдЖрдгреВ рд╢рдХрддреЛ, рдЙрджрд╛. ScheduleEntity:

@RealmClass
class ScheduleEntity(
 var monday: DayOfWeekEntity? = null,
 var tuesday: DayOfWeekEntity? = null,
 var wednesday: DayOfWeekEntity? = null,
 var thursday: DayOfWeekEntity? = null,
 var friday: DayOfWeekEntity? = null,
 var saturday: DayOfWeekEntity? = null,
 var sunday: DayOfWeekEntity? = null
) : RealmObject(), NestedEntityAware {

 override fun getNestedEntities(): Collection<RealmObject?> {
   return listOf(
       monday, tuesday, wednesday, thursday, friday, saturday, sunday
   )
 }
}

рдЖрдгрд┐ рдпрд╛рдкреНрд░рдорд╛рдгреЗ, рд╡рд╕реНрддреВрдВрдЪреЗ рдШрд░рдЯреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрдК рд╢рдХрддрд╛рдд.

рдордЧ рдЖрдореНрд╣реА рдПрдХ рдкрджреНрдзрдд рд▓рд┐рд╣рд┐рддреЛ рдЬреА рд╕рд░реНрд╡ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╡рд╛рд░рдВрд╡рд╛рд░ рд╣рдЯрд╡рддреЗ. рдкрджреНрдзрдд (рд╡рд┐рд╕реНрддрд╛рд░ рдореНрд╣рдгреВрди рдХреЗрд▓реА) deleteAllNestedEntities рд╕рд░реНрд╡ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╡рд╕реНрддреВ рдЖрдгрд┐ рдкрджреНрдзрдд рдорд┐рд│рддреЗ deleteNestedRecursively NestedEntityAware рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рдкрд░реВрди рд╕рд░реНрд╡ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╡рд╛рд░рдВрд╡рд╛рд░ рдХрд╛рдвреВрди рдЯрд╛рдХрддреЗ:

fun <T> Realm.deleteAllNestedEntities(entities: Collection<T>,
 entityClass: Class<out RealmObject>,
 idMapper: (T) -> String,
 idFieldName : String = "id"
 ) {

 val existedObjects = where(entityClass)
     .`in`(idFieldName, entities.map(idMapper).toTypedArray())
     .findAll()

 deleteNestedRecursively(existedObjects)
}

private fun Realm.deleteNestedRecursively(entities: Collection<RealmObject?>) {
 for(entity in entities) {
   entity?.let { realmObject ->
     if (realmObject is NestedEntityAware) {
       deleteNestedRecursively((realmObject as NestedEntityAware).getNestedEntities())
     }
     realmObject.deleteFromRealm()
   }
 }
}

рдЖрдореНрд╣реА рд╣реЗ рд╕рд░реНрд╡рд╛рдд рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврдгрд╛рд▒реНрдпрд╛ рд╡рд╕реНрддреВрдВрд╕рд╣ рдХреЗрд▓реЗ рдЖрдгрд┐ рдХрд╛рдп рдЭрд╛рд▓реЗ рддреЗ рддрдкрд╛рд╕рд▓реЗ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рдкрд░рд┐рдгрд╛рдореА, рдЖрдореНрд╣реА рдпрд╛ рджреНрд░рд╛рд╡рдгрд╛рдиреЗ рдЭрд╛рдХрд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рд╡рд╛рдврдгреЗ рдерд╛рдВрдмрд▓реЗ. рдЖрдгрд┐ рдкрд╛рдпрд╛рдЪреА рдПрдХреВрдг рд╡рд╛рдв рдордВрджрд╛рд╡рд▓реА, рдкрдг рдерд╛рдВрдмрд▓реА рдирд╛рд╣реА.

"рд╕рд╛рдорд╛рдиреНрдп" рдЙрдкрд╛рдп

рдЬрд░реА рдкрд╛рдпрд╛ рдЕрдзрд┐рдХ рд╣рд│реВрд╣рд│реВ рд╡рд╛рдвреВ рд▓рд╛рдЧрд▓рд╛, рддрд░реАрд╣реА рддреЛ рд╡рд╛рдврд▓рд╛. рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдкреБрдвреЗ рдкрд╛рд╣реВ рд▓рд╛рдЧрд▓реЛ. рдЖрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк Realm рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдХреЕрд╢рд┐рдВрдЧрдЪрд╛ рдЕрддрд┐рд╢рдп рд╕рдХреНрд░рд┐рдп рд╡рд╛рдкрд░ рдХрд░рддреЛ. рдореНрд╣рдгреВрди, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯрд╕рд╛рдареА рд╕рд░реНрд╡ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд▓рд┐рд╣рд┐рдгреЗ рд╢реНрд░рдо-рдХреЗрдВрджреНрд░рд┐рдд рдЖрд╣реЗ, рддрд╕реЗрдЪ рддреНрд░реБрдЯреАрдВрдЪрд╛ рдзреЛрдХрд╛ рд╡рд╛рдврддреЛ, рдХрд╛рд░рдг рдХреЛрдб рдмрджрд▓рддрд╛рдирд╛ рдЖрдкрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рд╡рд┐рд╕рд░реВ рд╢рдХрддрд╛.

рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдХрд░рд╛рдпрдЪреА рд╣реЛрддреА рдХреА рдореА рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реНрд╡рддрдГрдЪ рдХрд╛рд░реНрдп рдХрд░рддреЗ.

рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдПрдЦрд╛рджреА рдЧреЛрд╖реНрдЯ рд╕реНрд╡рддрдГрд╣реВрди рдХрд╛рд░реНрдп рдХрд░рд╛рдпрдЪреА рдЕрд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡рд╛рдкрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдлреАрд▓реНрдбрдордзреВрди рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рддреЗ рдХреНрд╖реЗрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╣реЗ рдХреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреА рд╕реВрдЪреА рдЖрд╣реЗ рд╣реЗ рддрдкрд╛рд╕реВ рд╢рдХрддреЛ:

RealmModel::class.java.isAssignableFrom(field.type)

RealmList::class.java.isAssignableFrom(field.type)

рдлреАрд▓реНрдб RealmModel рдХрд┐рдВрд╡рд╛ RealmList рдЕрд╕рд▓реНрдпрд╛рд╕, рдпрд╛ рдлреАрд▓реНрдбрдЪрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдЬреЛрдбрд╛. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЖрдкрдг рд╡рд░реАрд▓рдкреНрд░рдорд╛рдгреЗрдЪ рдЖрд╣реЗ, рдлрдХреНрдд рдпреЗрдереЗ рддреЗ рд╕реНрд╡рддрдГрдЪ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓. рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдЪреА рдкрджреНрдзрдд рд╕реНрд╡рддрдГрдЪ рдЦреВрдк рд╕реЛрдкреА рдЖрд╣реЗ рдЖрдгрд┐ рддреА рдпрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕рддреЗ:

fun <T : Any> Realm.cascadeDelete(entities: Collection<T?>) {
 if(entities.isEmpty()) {
   return
 }

 entities.filterNotNull().let { notNullEntities ->
   notNullEntities
       .filterRealmObject()
       .flatMap { realmObject -> getNestedRealmObjects(realmObject) }
       .also { realmObjects -> cascadeDelete(realmObjects) }

   notNullEntities
       .forEach { entity ->
         if((entity is RealmObject) && entity.isValid) {
           entity.deleteFromRealm()
         }
       }
 }
}

рд╡рд┐рд╕реНрддрд╛рд░ filterRealmObject рдлрд┐рд▓реНрдЯрд░ рдЖрдЙрдЯ рдЖрдгрд┐ рдлрдХреНрдд Realm рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ. рдкрджреНрдзрдд getNestedRealmObjects рдкрд░рд╛рд╡рд░реНрддрдирд╛рджреНрд╡рд╛рд░реЗ, рддреЗ рд╕рд░реНрд╡ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╖реЗрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╢реЛрдзрддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдПрдХрд╛ рд░реЗрдЦреАрдп рд╕реВрдЪреАрдордзреНрдпреЗ рдареЗрд╡рддреЗ. рдордЧ рдЖрдкрдг рддреАрдЪ рдЧреЛрд╖реНрдЯ рд╡рд╛рд░рдВрд╡рд╛рд░ рдХрд░рддреЛ. рд╣рдЯрд╡рддрд╛рдирд╛, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡реИрдзрддреЗрд╕рд╛рдареА рдСрдмреНрдЬреЗрдХреНрдЯ рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ isValid, рдХрд╛рд░рдг рдЕрд╕реЗ рдЕрд╕реВ рд╢рдХрддреЗ рдХреА рднрд┐рдиреНрди рдореВрд│ рд╡рд╕реНрддреВрдВрдЪреЗ рдШрд░рдЯреЗ рдПрдХрд╕рд╛рд░рдЦреЗ рдЕрд╕реВ рд╢рдХрддрд╛рдд. рд╣реЗ рдЯрд╛рд│рдгреЗ рдЖрдгрд┐ рдирд╡реАрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рдЖрдпрдбреАрдЪреА рд╕реНрд╡рдпрдВ-рдЬрдирд░реЗрд╢рди рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

getNestedRealmObjects рдкрджреНрдзрддреАрдЪреА рдкреВрд░реНрдг рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

private fun getNestedRealmObjects(realmObject: RealmObject) : List<RealmObject> {
 val nestedObjects = mutableListOf<RealmObject>()
 val fields = realmObject.javaClass.superclass.declaredFields

// ╨Я╤А╨╛╨▓╨╡╤А╤П╨╡╨╝ ╨║╨░╨╢╨┤╨╛╨╡ ╨┐╨╛╨╗╨╡, ╨╜╨╡ ╤П╨▓╨╗╤П╨╡╤В╤Б╤П ╨╗╨╕ ╨╛╨╜╨╛ RealmModel ╨╕╨╗╨╕ ╤Б╨┐╨╕╤Б╨║╨╛╨╝ RealmList
 fields.forEach { field ->
   when {
     RealmModel::class.java.isAssignableFrom(field.type) -> {
       try {
         val child = getChildObjectByField(realmObject, field)
         child?.let {
           if (isInstanceOfRealmObject(it)) {
             nestedObjects.add(child as RealmObject)
           }
         }
       } catch (e: Exception) { ... }
     }

     RealmList::class.java.isAssignableFrom(field.type) -> {
       try {
         val childList = getChildObjectByField(realmObject, field)
         childList?.let { list ->
           (list as RealmList<*>).forEach {
             if (isInstanceOfRealmObject(it)) {
               nestedObjects.add(it as RealmObject)
             }
           }
         }
       } catch (e: Exception) { ... }
     }
   }
 }

 return nestedObjects
}

private fun getChildObjectByField(realmObject: RealmObject, field: Field): Any? {
 val methodName = "get${field.name.capitalize()}"
 val method = realmObject.javaClass.getMethod(methodName)
 return method.invoke(realmObject)
}

рдкрд░рд┐рдгрд╛рдореА, рдЖрдордЪреНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯ рдХреЛрдбрдордзреНрдпреЗ рдЖрдореНрд╣реА рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдмрджрд▓ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА "рдХреЕрд╕реНрдХреЗрдбрд┐рдВрдЧ рдбрд┐рд▓реАрдЯ" рд╡рд╛рдкрд░рддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЗрдиреНрд╕рд░реНрдЯ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

override fun <T : Entity> insert(
 entityInformation: EntityInformation,
 entities: Collection<T>): Collection<T> = entities.apply {
 realmInstance.cascadeDelete(getManagedEntities(entityInformation, this))
 realmInstance.copyFromRealm(
     realmInstance
         .copyToRealmOrUpdate(this.map { entity -> entity as RealmModel }
 ))
}

рдкрджреНрдзрдд рдкреНрд░рдердо getManagedEntities рд╕рд░реНрд╡ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рдЖрдгрд┐ рдирдВрддрд░ рдкрджреНрдзрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ cascadeDelete рдирд╡реАрди рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╕рд░реНрд╡ рдЧреЛрд│рд╛ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рд╡рд╛рд░рдВрд╡рд╛рд░ рд╣рдЯрд╡рддрд╛рдд. рдЖрдореНрд╣реА рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдордзреНрдпреЗ рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рд╡рд╛рдкрд░рддреЛ. Realm рдордзреАрд▓ рдореЗрдорд░реА рд▓реАрдХ рдкреВрд░реНрдгрдкрдгреЗ рдирд╛рд╣реАрд╢реА рдЭрд╛рд▓реА рдЖрд╣реЗ. рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│реЗрдЪреНрдпрд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдЪреЗ рд╕рдорд╛рди рдореЛрдЬрдорд╛рдк рдХреЗрд▓реНрдпрд╛рд╡рд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рд╕рддреЛ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рдЧреНрд░реАрди рд▓рд╛рдЗрди рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреНрдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рддрд╛рдирд╛ рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╡рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│реЗрдЪреЗ рдЕрд╡рд▓рдВрдмрди рджрд░реНрд╢рд╡рддреЗ.

рдкрд░рд┐рдгрд╛рдо рдЖрдгрд┐ рдирд┐рд╖реНрдХрд░реНрд╖

рд╕рддрдд рд╡рд╛рдврдгрд╛рд░рд╛ Realm рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрддрд┐рд╢рдп рд╣рд│реВ рд▓реЙрдиреНрдЪ рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░рд╡реГрддреНрдд рдХрд░рдд рд╣реЛрддрд╛. рдЖрдореНрд╣реА рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреНрдпрд╛ рдЖрдордЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ "рдХреЕрд╕реНрдХреЗрдбрд┐рдВрдЧ рдбрд┐рд▓реАрдЯ" рд╕рд╣ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХреЗрд▓реЗ. рдЖрдгрд┐ рдЖрддрд╛ рдЖрдореНрд╣реА _app_start рдореЗрдЯреНрд░рд┐рдХрджреНрд╡рд╛рд░реЗ рдЖрдордЪреНрдпрд╛ рдирд┐рд░реНрдгрдпрд╛рдЪрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│реЗрд╡рд░ рдХрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рдЭрд╛рд▓рд╛ рдпрд╛рдЪреЗ рдкрд░реАрдХреНрд╖рдг рдЖрдгрд┐ рдореВрд▓реНрдпрдорд╛рдкрди рдХрд░рддреЛ.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА 90 рджрд┐рд╡рд╕рд╛рдВрдЪрд╛ рдХрд╛рд▓рд╛рд╡рдзреА рдШреЗрддреЛ рдЖрдгрд┐ рдкрд╛рд╣рддреЛ: рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рдЪреА рд╡реЗрд│, рдордзреНрдпрдо рдЖрдгрд┐ рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ 95 рд╡реНрдпрд╛ рдЯрдХреНрдХреЗрд╡рд╛рд░реАрд╡рд░ рдпреЗрддреЗ, рддреЗ рдХрдореА рд╣реЛрдК рд▓рд╛рдЧрд▓реЗ рдЖрдгрд┐ рдпрд╛рдкреБрдвреЗ рд╡рд╛рдврдд рдирд╛рд╣реА.

рд░рд┐рдЕрд▓рдордордзреАрд▓ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреНрдпрд╛рдиреЗ рджреАрд░реНрдШ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рд╡рд░ рдХрд╕реЗ рд╡рд┐рдЬрдп рдорд┐рд│рд╡рд▓реЗ рдпрд╛рдЪреА рдХрдерд╛

рдЬрд░ рддреБрдореНрд╣реА рд╕рд╛рдд рджрд┐рд╡рд╕рд╛рдВрдЪрд╛ рдЪрд╛рд░реНрдЯ рдкрд╛рд╣рд┐рд▓рд╛ рддрд░, _app_start рдореЗрдЯреНрд░рд┐рдХ рдкреВрд░реНрдгрдкрдгреЗ рдкреБрд░реЗрд╕рд╛ рджрд┐рд╕рддреЛ рдЖрдгрд┐ 1 рд╕реЗрдХрдВрджрд╛рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЖрд╣реЗ.

рд╣реЗ рджреЗрдЦреАрд▓ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдХреА рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, _app_start рдЪреЗ рд╕рд░рд╛рд╕рд░реА рдореВрд▓реНрдп 5 рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рд╕ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реВрдЪрдирд╛ рдкрд╛рдард╡рддреЗ. рддрдерд╛рдкрд┐, рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддреЛ, рдЖрдкрдг рдпрд╛рд╡рд░ рд╡рд┐рд╕рдВрдмреВрди рд░рд╛рд╣реВ рдирдпреЗ, рдЙрд▓рдЯ рдЖрдд рдЬрд╛ рдЖрдгрд┐ рддреЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рддрдкрд╛рд╕рд╛.

Realm рдбреЗрдЯрд╛рдмреЗрд╕рдЪреА рдЦрд╛рд╕ рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рддреЛ рдПрдХ рдиреЙрди-рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд╣реЗ. рд╡рд╛рдкрд░рдгреА рд╕реЛрдкреА, ORM рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕ рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдВрдХрд┐рдВрдЧрд╢реА рд╕рдорд╛рдирддрд╛ рдЕрд╕реВрдирд╣реА, рддреНрдпрд╛рдд рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рдгреЗ рдирд╛рд╣реА.

рд╣реЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рди рдШреЗрддрд▓реНрдпрд╛рд╕, рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреВ рдЬрдорд╛ рд╣реЛрддреАрд▓ рдЖрдгрд┐ "рдЧрд│рддреА" рд╣реЛрддреАрд▓. рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рддрдд рд╡рд╛рдвреЗрд▓, рдЬреНрдпрд╛рдореБрд│реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдордВрджреА рдХрд┐рдВрд╡рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд╡рд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдИрд▓.

рдореА рд░рд┐рдЕрд▓рдордордзреАрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рдХреЕрд╕реНрдХреЗрдб рджреНрд░реБрддрдкрдгреЗ рдХрд╕реЗ рд╣рдЯрд╡рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рдЖрдордЪрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓рд╛, рдЬреЛ рдЕрджреНрдпрд╛рдк рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди рдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рд▓реЗ рдЬрд╛рдд рдЖрд╣реЗ. рдореНрд╣рдгрд╛ ╨╕ рдореНрд╣рдгрд╛. рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдпрд╛рдореБрд│реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│реЗрдд рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╡реЗрдЧ рдЖрд▓рд╛.

рдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдЪреНрдпрд╛ рдирдЬреАрдХрдЪреНрдпрд╛ рджреЗрдЦрд╛рд╡реНрдпрд╛рдмрджреНрджрд▓ рдЪрд░реНрдЪрд╛ рдЕрд╕реВрдирд╣реА, рдХреНрд╖реЗрддреНрд░рд╛рдордзреНрдпреЗ рдХреЕрд╕реНрдХреЗрдб рд╣рдЯрд╡рд┐рдгреНрдпрд╛рдЪреА рдЕрдиреБрдкрд╕реНрдерд┐рддреА рдбрд┐рдЭрд╛рдЗрдирджреНрд╡рд╛рд░реЗ рдХреЗрд▓реА рдЬрд╛рддреЗ. рддреБрдореНрд╣реА рдирд╡реАрди рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЭрд╛рдЗрди рдХрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛. рдЖрдгрд┐ рдЬрд░ рддреБрдореНрд╣реА рдЖрдзреАрдЪ Realm рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╢рд╛ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛