рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

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

рд╣рд╛рдореАрд▓реЗ рдПрдХ рдкрдЯрдХ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреМрдВ рдХрд┐ рдбреЛрдбреЛ рдкрд┐рдЬреНрдЬрд╛ рдПрдк рдФрд╕рддрдорд╛ рд╕реБрд░реБ рд╣реБрди рей рд╕реЗрдХреЗрдиреНрдб рд▓рд╛рдЧреНрдЫ, рд░ рдХреЗрд╣реА "рднрд╛рдЧреНрдпрд╡рд╛рдирд╣рд░реВ" рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рд▓реЗ резрел-реиреж рд╕реЗрдХреЗрдиреНрдб рд▓рд┐рдиреНрдЫред

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

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ
рд▓реЗрдЦ рд▓реЗрдЦрдХ: рдореНрдпрд╛рдХреНрд╕рд┐рдо рдХрд╛рдЪрд┐рдирдХрд┐рди тАФ рдбреЛрдбреЛ рдкрд┐рдЬреНрдЬрд╛рдорд╛ рдПрдиреНрдбреНрд░реЛрдЗрдб рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ред

рдкрд╣рд┐рд▓реЛ рдЧрддрд┐рд╡рд┐рдзрд┐рдХреЛ onResume() рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЖрдЗрдХрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реЗрдХреЛ рддреАрди рд╕реЗрдХреЗрдиреНрдб рдЕрдирдиреНрддрддрд╛ рд╣реЛред рд░ рдХреЗрд╣рд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп 15-20 рд╕реЗрдХреЗрдиреНрдб рдкреБрдЧреНрдпреЛред рдпреЛ рдкрдирд┐ рдХрд╕рд░реА рд╕рдореНрднрд╡ рдЫ ?

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

рд╕рдорд╕реНрдпрд╛рдХреЛ рдЦреЛрдЬ рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

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

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

рдпреЛ рдХрддрд┐ рд▓рд╛рдореЛ рдЫ? рдпрд╕ рдЕрдиреБрд╕рд╛рд░ рдЧреБрдЧрд▓ рдХрд╛рдЧрдЬрд╛рдд, рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдЪрд┐рд╕реЛ рд╕реБрд░реБрд╡рд╛рддрд▓реЗ 5 рд╕реЗрдХреЗрдиреНрдб рднрдиреНрджрд╛ рдХрдо рд╕рдордп рд▓рд┐рдиреНрдЫ рднрдиреЗ, рдпрд╕рд▓рд╛рдИ "рд╕рд╛рдорд╛рдиреНрдп рдЬрд╕реНрддреИ" рдорд╛рдирд┐рдиреНрдЫред рдбреЛрдбреЛ рдкрд┐рдЬреНрдЬрд╛ рдПрдиреНрдбреНрд░реЛрдЗрдб рдПрдк рд╕реБрд░реБ рднрдпреЛ (рдлрд╛рдпрд░рдмреЗрд╕ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЕрдиреБрд╕рд╛рд░ _app_start) рдорд╛ рдЪрд┐рд╕реЛ рд╕реБрд░реБрд╡рд╛рдд рдФрд╕рддрдорд╛ 3 рд╕реЗрдХреЗрдиреНрдбрдорд╛ - "рдареВрд▓реЛ рдЫреИрди, рднрдпрд╛рдирдХ рдЫреИрди," рддрд┐рдиреАрд╣рд░реВ рднрдиреНрдЫрдиреНред

рддрд░ рддреНрдпрд╕рдкрдЫрд┐ рдЧреБрдирд╛рд╕реЛрд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрди рдерд╛рд▓реЗ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЧрд░реНрди рдзреЗрд░реИ, рдзреЗрд░реИ, рдзреЗрд░реИ рд▓рд╛рдореЛ рд╕рдордп рд▓рд╛рдЧреНрдпреЛ! рд╕реБрд░реБрдорд╛, рд╣рд╛рдореАрд▓реЗ "рдзреЗрд░реИ, рдзреЗрд░реИ, рдзреЗрд░реИ рд▓рд╛рдореЛ" рдХреЗ рд╣реЛ рдорд╛рдкрди рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рдпрд░рдмреЗрд╕ рдЯреНрд░реЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рдЯреНрд░реЗрд╕.

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

рдпреЛ рдорд╛рдирдХ рдЯреНрд░реЗрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдПрдк рдЦреЛрд▓реНрдиреЗ рдХреНрд╖рдг рд░ рдкрд╣рд┐рд▓реЛ рдЧрддрд┐рд╡рд┐рдзрд┐рдХреЛ onResume() рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрдПрдХреЛ рдХреНрд╖рдг рдмреАрдЪрдХреЛ рд╕рдордпрд▓рд╛рдИ рдирд╛рдкреНрдЫред рдлрд╛рдпрд░рдмреЗрд╕ рдХрдиреНрд╕реЛрд▓рдорд╛ рдпреЛ рдореЗрдЯреНрд░рд┐рдХрд▓рд╛рдИ _app_start рднрдирд┐рдиреНрдЫред рдпреЛ рдмрд╛рд╣рд┐рд░ рднрдпреЛ рдХрд┐:

  • 95 рдФрдВ рдкреНрд░рддрд┐рд╢рдд рднрдиреНрджрд╛ рдорд╛рдерд┐рдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рд▓рдЧрднрдЧ 20 рд╕реЗрдХреЗрдиреНрдб (рдХреЗрд╣реА рд▓рд╛рдореЛ) рд╣реЛ, рдФрд╕рдд рдЪрд┐рд╕реЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп 5 рд╕реЗрдХреЗрдиреНрдб рднрдиреНрджрд╛ рдХрдо рднрдП рддрд╛рдкрдирд┐ред
  • рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдПрдХ рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рд╣реЛрдЗрди, рддрд░ рд╕рдордп рд╕рдВрдЧ рдмрдвреНрдЫред рддрд░ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддреНрдпрд╣рд╛рдБ рдереЛрдкрд╛рд╣рд░реВ рдЫрдиреНред рд╣рд╛рдореАрд▓реЗ рдпреЛ рдврд╛рдБрдЪрд╛ рднреЗрдЯреНрдЯрд╛рдпреМрдВ рдЬрдм рд╣рд╛рдореАрд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд╕реНрдХреЗрд▓рд▓рд╛рдИ 90 рджрд┐рдирдорд╛ рдмрдврд╛рдПрдХрд╛ рдерд┐рдпреМрдВред

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

рдордирдорд╛ рджреБрдИрд╡рдЯрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпреЛ:

  1. рдХреЗрд╣реА рдЪреБрд╣рд┐рд░рд╣реЗрдХреЛ рдЫред
  2. рдпреЛ "рдХреЗрд╣рд┐" рд░рд┐рд▓реАрдЬ рдкрдЫрд┐ рд░рд┐рд╕реЗрдЯ рд╣реБрдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдлреЗрд░рд┐ рд▓реАрдХ рд╣реБрдиреНрдЫред

"рд╕рд╛рдпрдж рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕рд╛рде рдХреЗрд╣рд┐," рд╣рд╛рдореАрд▓реЗ рд╕реЛрдЪреНрдпреМрдВ, рд░ рд╣рд╛рдореА рд╕рд╣реА рдерд┐рдпреМрдВред рд╕рд░реНрд╡рдкреНрд░рдердо, рд╣рд╛рдореА рдбрд╛рдЯрд╛рдмреЗрд╕рд▓рд╛рдИ рдХреНрдпрд╛рд╕рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ; рдорд╛рдЗрдЧреНрд░реЗрд╕рдирдХреЛ рдХреНрд░рдордорд╛ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЦрд╛рд▓реА рдЧрд░реНрдЫреМрдВред рджреЛрд╕реНрд░реЛ, рдбрд╛рдЯрд╛рдмреЗрд╕ рд▓реЛрдб рд╣реБрдиреНрдЫ рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рд╕рдмреИ рдХреБрд░рд╛ рдорд┐рд▓реНрдЫред

Realm рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдХреЗ рдЧрд▓рдд рдЫ

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рд╕реНрдерд╛рдкрдирд╛рджреЗрдЦрд┐ рд░ рд╕рдХреНрд░рд┐рдп рдкреНрд░рдпреЛрдЧрдХреЛ рдмрдЦрдд рдердк рдбрд╛рдЯрд╛рдмреЗрд╕рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдЬреАрд╡рдирдорд╛ рдХрд╕рд░реА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдерд╛рд▓реНрдпреМрдВред рддрдкрд╛рдИрдВ рдорд╛рд░реНрдлрдд рдХреНрд╖реЗрддреНрд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╕реНрдЯреЗрдереЛ рд╡рд╛ рдердк рд╡рд┐рд╡рд░рдгрдорд╛ рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдлрд╛рдЗрд▓ рдЦреЛрд▓реЗрд░ рдХреНрд╖реЗрддреНрд░ рд╕реНрдЯреБрдбрд┐рдпреЛред ADB рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛рдмреЗрд╕рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, Realm рдбрд╛рдЯрд╛рдмреЗрд╕ рдлрд╛рдЗрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

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

рд╡рд┐рднрд┐рдиреНрди рд╕рдордпрдорд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреМрдВ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░рдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░рдиреНрддрд░ рдмрдврд┐рд░рд╣реЗрдХреЛ рдЫред

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ
рддрд╕реНрд╡рд┐рд░рд▓реЗ рджреБрдИ рдлрд╛рдИрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд░рд┐рдпрд▓рдо рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рдЯреБрдХреНрд░рд╛ рджреЗрдЦрд╛рдЙрдБрджрдЫ: рдмрд╛рдпрд╛рдБрдорд╛ - рд╕реНрдерд╛рдкрдирд╛ рдкрдЫрд┐ рдХреЗрд╣реА рд╕рдордп рдкрдЫрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдзрд╛рд░, рджрд╛рдпрд╛рдБ - рд╕рдХреНрд░рд┐рдп рдкреНрд░рдпреЛрдЧ рдкрдЫрд┐ред рдпреЛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ рдХрд┐ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ ImageEntity ╨╕ MoneyType рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдмрдвреЗрдХреЛ рдЫ (рд╕реНрдХреНрд░рд┐рдирд╕рдЯрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрд╛рдЙрдБрдЫ)ред

рдбрд╛рдЯрд╛рдмреЗрд╕ рд╡реГрджреНрдзрд┐ рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдмреАрдЪ рд╕рдореНрдмрдиреНрдз

рдЕрдирд┐рдпрдиреНрддреНрд░рд┐рдд рдбрд╛рдЯрд╛рдмреЗрд╕ рд╡реГрджреНрдзрд┐ рдзреЗрд░реИ рдЦрд░рд╛рдм рдЫред рддрд░ рдпрд╕рд▓реЗ рдХрд╕рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордпрд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫ? ActivityManager рдорд╛рд░реНрдлрдд рдпреЛ рдорд╛рдкрди рдЧрд░реНрди рдПрдХрджрдо рд╕рдЬрд┐рд▓реЛ рдЫред рдПрдиреНрдбреНрд░реЛрдЗрдб 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 рд╕рдордп, рддрдкрд╛рдИрдВ рдпрд╕ рдореЗрдЯреНрд░рд┐рдХрдХреЛ рд╕рдЩреНрдХрд▓рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рджреГрд╢реНрдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрд▓рдХреЛ рдЧреНрд░рд╛рдлрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдЪрд┐рд╕реЛ рд╕реБрд░реБрд╡рд╛рддрдХреЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордпрдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рджреЗрдЦрд╛рдЙрдБрдЫред

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

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

рдЕрдирдиреНрдд рдбрд╛рдЯрд╛рдмреЗрд╕ рд╡реГрджреНрдзрд┐ рдХреЛ рдХрд╛рд░рдг

"рд▓реАрдХ" рд╣рдЯрд╛рдЙрдиреБ рдЕрдШрд┐, рдпреЛ рдмреБрдЭреНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐рди рддрд┐рдиреАрд╣рд░реВ рдкрд╣рд┐рд▓реЛ рд╕реНрдерд╛рдирдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдпреЛред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╣реЛ рд╕рдореНрдЭреМрдВред

рдХреНрд╖реЗрддреНрд░ рдПрдХ рдЧреИрд░-рд░рд┐рд▓реЗрд╢рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╣реЛред рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдПрдиреНрдбреНрд░реЛрдЗрдбрдорд╛ рдХрддрд┐рд╡рдЯрд╛ 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()) рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рдпреЛ рд╡рд╕реНрддреБ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдУрднрд░рд░рд╛рдЗрдЯ рд╣реБрдиреЗрдЫред рддрд░ рд╕рдмреИ рдЖрдиреНрддрд░рд┐рдХ рд╡рд╕реНрддреБрд╣рд░реВ (рдЫрд╡рд┐, рдЕрдиреБрдХреВрд▓рдиEntity рд░ cartComboProducts) рдЕрднрд┐рднрд╛рд╡рдХрд╕рдБрдЧрдХреЛ рд╕рдореНрдмрдиреНрдз рдЧреБрдорд╛рдЙрдиреЗрдЫрдиреН рд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд░рд╣рдиреЗрдЫрдиреНред

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

рдЬрдм рд╣рд╛рдореА рдХреНрд╖реЗрддреНрд░рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореАрд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╕рдмреИ рддрддреНрд╡рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреБрдкрд░реНрдЫ рд░ рддреНрдпрд╕реНрддрд╛ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЕрдШрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдореЗрдЯрд╛рдЙрдиреБрдкрд░реНрджрдЫред рдпреЛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпреЛ рдЬрд╕реНрддреИ:

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()
}
// ╨╕ ╨┐╨╛╤В╨╛╨╝ ╤Г╨╢╨╡ ╤Б╨╛╤Е╤А╨░╨╜╤П╨╡╨╝

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

"рдЫрд┐рдЯреЛ" рд╕рдорд╛рдзрд╛рди

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

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 рдлрд┐рд▓реНрдЯрд░ рдЖрдЙрдЯ рдЧрд░реНрджрдЫ рд░ рдорд╛рддреНрд░ рдХреНрд╖реЗрддреНрд░ рд╡рд╕реНрддреБрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрджрдЫред рд╡рд┐рдзрд┐ getNestedRealmObjects рдкреНрд░рддрд┐рдмрд┐рдореНрдм рдорд╛рд░реНрдлрдд, рдпрд╕рд▓реЗ рд╕рдмреИ рдиреЗрд╕реНрдЯреЗрдб рдХреНрд╖реЗрддреНрд░ рд╡рд╕реНрддреБрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд░реЗрдЦреАрдп рд╕реВрдЪреАрдорд╛ рд░рд╛рдЦреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдПрдЙрдЯреИ рдХреБрд░рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЧрд░реНрдЫреМрдВред рдореЗрдЯрд╛рдЙрдБрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рд╡рд╕реНрддреБрдХреЛ рд╡реИрдзрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ isValid, рдХрд┐рдирднрдиреЗ рдпреЛ рд╣реБрди рд╕рдХреНрдЫ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓ рд╡рд╕реНрддреБрд╣рд░реВрдорд╛ рд╕рдорд╛рди рдиреЗрд╕реНрдЯреЗрдб рд╣реБрди рд╕рдХреНрдЫред рдпреЛ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд░рд╛рдореНрд░реЛ рдЫ рд░ рдирдпрд╛рдБ рд╡рд╕реНрддреБрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рдЖрдИрдбреАрдХреЛ рд╕реНрд╡рдд: рдЙрддреНрдкрд╛рджрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

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 рдореЗрдЯреНрд░рд┐рдХ рдорд╛рд░реНрдлрдд рд╣рд╛рдореНрд░реЛ рдирд┐рд░реНрдгрдпрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордпрд▓рд╛рдИ рдХрд╕рд░реА рдЕрд╕рд░ рдЧрд░реНрдЫ рднрдиреЗрд░ рдирд┐рдЧрд░рд╛рдиреА рд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдЫреМрдВред

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА 90 рджрд┐рдирдХреЛ рд╕рдордпрд╛рд╡рдзрд┐ рд▓рд┐рдиреНрдЫреМрдВ рд░ рд╣реЗрд░реНрдЫреМрдВ: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реБ рд╣реБрдиреЗ рд╕рдордп, рджреБрдмреИ рдордзреНрдп рд░ рдЬреБрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ 95 рдФрдВ рдкреНрд░рддрд┐рд╢рддрдорд╛ рдкрд░реНрджрдЫ, рдШрдЯреНрди рдерд╛рд▓реНрдпреЛ рд░ рдЕрдм рдмрдвреНрджреИрдиред

рдХрд╕рд░реА Realm рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдХреЛ рдХрдерд╛ рдПрдХ рд▓рд╛рдореЛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд╛ рдЬрд┐рддреНрдпреЛ

рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рд╛рдд-рджрд┐рдирдХреЛ рдЪрд╛рд░реНрдЯ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, _app_start рдореЗрдЯреНрд░рд┐рдХ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкрд░реНрдпрд╛рдкреНрдд рджреЗрдЦрд┐рдиреНрдЫ рд░ 1 рд╕реЗрдХреЗрдиреНрдб рднрдиреНрджрд╛ рдХрдо рдЫред

рдпреЛ рдкрдирд┐ рдердкреНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдпрджрд┐ _app_start рдХреЛ рдордзреНрдп рдорд╛рди 5 рд╕реЗрдХреЗрдиреНрдб рднрдиреНрджрд╛ рдмрдвреА рдЫ рднрдиреЗ Firebase рд▓реЗ рд╕реВрдЪрдирд╛рд╣рд░реВ рдкрдард╛рдЙрдБрдЫред рдпрджреНрдпрдкрд┐, рд╣рд╛рдореА рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ, рддрдкрд╛рдИрд▓реЗ рдпрд╕рдорд╛ рднрд░ рдкрд░реНрдиреБ рд╣реБрдБрджреИрди, рдмрд░реБ рднрд┐рддреНрд░ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

Realm рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╡рд┐рд╢реЗрд╖ рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдпреЛ рдПрдХ рдЧреИрд░-рд░рд┐рд▓реЗрд╢рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╣реЛред рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рд╕рд╣рдЬрддрд╛, ORM рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рд░ рд╡рд╕реНрддреБ рд▓рд┐рдЩреНрдХрд┐рдЩрд╕рдБрдЧ рд╕рдорд╛рдирддрд╛ рднрдП рддрд╛рдкрдирд┐, рдпрд╕рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдЫреИрдиред

рдпрджрд┐ рдпрд╕рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦрд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреБрд╣рд░реВ рдЬрдореНрдорд╛ рд╣реБрдиреЗрдЫрдиреН рд░ "рд▓рд┐рдХ" рд╣реБрдиреЗрдЫрдиреНред рдбрд╛рдЯрд╛рдмреЗрд╕ рдирд┐рд░рдиреНрддрд░ рдмрдвреНрдиреЗрдЫ, рдЬрд╕рд▓реЗ рдмрд╛рд░реАрдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдврд┐рд▓реЛ рд╡рд╛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдиреЗрдЫред

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

рдпрд╕ рд╕реБрд╡рд┐рдзрд╛рдХреЛ рдЖрд╕рдиреНрди рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓рдХреЛ рдмрд╛рд╡рдЬреБрдж, рджрд╛рдпрд░рд╛рдорд╛ рдХреНрдпрд╛рд╕реНрдХреЗрдб рдореЗрдЯрд╛рдЙрдиреЗ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдирдпрд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдЦрд╛рддрд╛рдорд╛ рд▓рд┐рдиреБрд╣реЛрд╕реНред рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рдиреИ Realm рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рддреНрдпрд╕реНрддрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН рднрдиреЗ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди