рд╕рд░реНрд╡ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдореЛрдмрд╛рдИрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНтАНрдпреЗ рдЬрд▓рдж рд▓рд╛рдБрдЪ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдгрд╛рд░реЗ UI рдЧреГрд╣реАрдд рдзрд░рддрд╛рдд. рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдБрдЪ рд╣реЛрдгреНрдпрд╛рд╕ рдмрд░рд╛рдЪ рд╡реЗрд│ рд▓рд╛рдЧрд▓реНрдпрд╛рд╕, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рджреБрдГрдЦ рдЖрдгрд┐ рд░рд╛рдЧ рдпреЗрдК рд▓рд╛рдЧрддреЛ. рддреБрдореНрд╣реА рдЧреНрд░рд╛рд╣рдХрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рд╕рд╣рдЬрдкрдгреЗ рдЦрд░рд╛рдм рдХрд░реВ рд╢рдХрддрд╛ рдХрд┐рдВрд╡рд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реАрдЪ рддреЛ рдкреВрд░реНрдгрдкрдгреЗ рдЧрдорд╛рд╡реВ рд╢рдХрддрд╛.
рдЖрдореНрд╣реА рдПрдХрджрд╛ рд╢реЛрдзреВрди рдХрд╛рдврд▓реЗ рдХреА рдбреЛрдбреЛ рдкрд┐рдЭреНрдЭрд╛ рдЕреЕрдк рд▓рд╛ рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░рд╛рд╕рд░реА 3 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд рдЖрдгрд┐ рдХрд╛рд╣реА "рднрд╛рдЧреНрдпрд╡рд╛рдирд╛рдВрд╕рд╛рдареА" 15-20 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд.
рдХрдЯрдЪреНрдпрд╛ рдЦрд╛рд▓реА рдПрдХ рдЖрдирдВрджреА рд╢реЗрд╡рдЯ рдЕрд╕рд▓реЗрд▓реА рдПрдХ рдХрдерд╛ рдЖрд╣реЗ: рдХреНрд╖реЗрддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рд╡рд╛рдвреАрдмрджреНрджрд▓, рдореЗрдорд░реА рд▓реАрдХ, рдЖрдореНрд╣реА рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреВ рдХрд╢рд╛ рдЬрдорд╛ рдХреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдирдВрддрд░ рд╕реНрд╡рддрдГрд▓рд╛ рдПрдХрддреНрд░ рдЦреЗрдЪрд▓реЗ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ.
рд▓реЗрдЦ рд▓реЗрдЦрдХ:рдореЕрдХреНрд╕рд┐рдо рдХрд╛рдЪрд┐рдирдХрд┐рди - рдбреЛрдбреЛ рдкрд┐рдЭреНрдЭрд╛ рдпреЗрдереЗ Android рд╡рд┐рдХрд╕рдХ.
рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдпрдХреЙрдирд╡рд░ рдХреНрд▓рд┐рдХ рдХреЗрд▓реНрдпрд╛рдкрд╛рд╕реВрди рдСрдирд░реЗрдЭреНрдпреБрдо() рдкрд░реНрдпрдВрдд рдкрд╣рд┐рд▓реНрдпрд╛ рдНрдХреНрдЯрд┐рд╡реНрд╣рд┐рдЯреАрдЪрд╛ рддреАрди рд╕реЗрдХрдВрдж рдореНрд╣рдгрдЬреЗ рдЕрдирдВрдд. рдЖрдгрд┐ рдХрд╛рд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА, рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ 15-20 рд╕реЗрдХрдВрджрд╛рдВрдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрд▓рд╛. рд╣реЗ рддрд░реА рдХрд╕реЗ рд╢рдХреНрдп рдЖрд╣реЗ?
рдЬреНрдпрд╛рдВрдирд╛ рд╡рд╛рдЪрд╛рдпрд▓рд╛ рд╡реЗрд│ рдирд╛рд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЫреЛрдЯрд╛рд╕рд╛ рд╕рд╛рд░рд╛рдВрд╢
рдЖрдордЪрд╛ рдХреНрд╖реЗрддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╡рд┐рд░рддрдкрдгреЗ рд╡рд╛рдврд▓рд╛. рдХрд╛рд╣реА рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреВ рд╣рдЯрд╡рд┐рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рд╕рддрдд рдЬрдорд╛ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рд╣рд│реВрд╣рд│реВ рд╡рд╛рдврд▓реА. рдордЧ рдЖрдореНрд╣реА рддреЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ, рдЖрдгрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдЪреА рд╡реЗрд│ рд▓рдХреНрд╖реНрдпрд╛рд╡рд░ рдЖрд▓реА - рддреА 1 рд╕реЗрдХрдВрджрд╛рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЭрд╛рд▓реА рдЖрдгрд┐ рдпрд╛рдкреБрдвреЗ рд╡рд╛рдврд▓реА рдирд╛рд╣реА. рд▓реЗрдЦрд╛рдд рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдгрд┐ рджреЛрди рдЙрдкрд╛рдп рдЖрд╣реЗрдд - рдПрдХ рджреНрд░реБрдд рдЖрдгрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп.
рд╕рдорд╕реНрдпреЗрдЪрд╛ рд╢реЛрдз рдЖрдгрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЖрдЬ, рдХреЛрдгрддреЗрд╣реА рдореЛрдмрд╛рдЗрд▓ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддреНрд╡рд░реАрдд рд▓рд╛рдБрдЪ рдХрд░рдгреЗ рдЖрдгрд┐ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдгрд╛рд░реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдкрдг рд╣реЗ рдлрдХреНрдд рдореЛрдмрд╛рдИрд▓ рдЕреЕрдкрдмрджреНрджрд▓ рдирд╛рд╣реА. рд╕реЗрд╡рд╛ рдЖрдгрд┐ рдХрдВрдкрдиреА рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪрд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рд╣реА рдПрдХ рдЬрдЯрд┐рд▓ рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╡рд┐рддрд░рдг рдЧрддреА рдкрд┐рдЭреНрдЭрд╛ рд╕реЗрд╡реЗрд╕рд╛рдареА рдкреНрд░рдореБрдЦ рдирд┐рд░реНрджреЗрд╢рдХрд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рдбрд┐рд▓рд┐рд╡реНрд╣рд░реА рдЬрд▓рдж рдЕрд╕реЗрд▓ рддрд░ рдкрд┐рдЭреНрдЭрд╛ рдЧрд░рдо рд╣реЛрдИрд▓ рдЖрдгрд┐ рдЖрддрд╛ рдЦрд╛рдпрдЪреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЧреНрд░рд╛рд╣рдХрд╛рд▓рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдерд╛рдВрдмрд╛рд╡реЗ рд▓рд╛рдЧрдгрд╛рд░ рдирд╛рд╣реА. рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА, рддреНрдпрд╛ рдмрджрд▓реНрдпрд╛рдд, рдЬрд▓рдж рд╕реЗрд╡реЗрдЪреА рднрд╛рд╡рдирд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдгреЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ, рдХрд╛рд░рдг рдЬрд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдлрдХреНрдд 20 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд, рддрд░ рдкрд┐рдЭреНрдЭрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд┐рддреА рд╡реЗрд│ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓?
рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рддрдГрд▓рд╛ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрд▓рд╛ рдХреА рдХрдзреАрдХрдзреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдиреНрдЪ рд╣реЛрдгреНрдпрд╛рд╕ рдХрд╛рд╣реА рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд рдЖрдгрд┐ рдирдВрддрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдЗрддрд░ рд╕рд╣рдХрд╛рд░реНрдпрд╛рдВрдХрдбреВрди рдХрд┐рддреА рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛ рдпрд╛рдмрджреНрджрд▓ рддрдХреНрд░рд╛рд░реА рдРрдХреВ рдпреЗрдК рд▓рд╛рдЧрд▓реНрдпрд╛. рдкрдг рдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреА рд╕рд╛рддрддреНрдпрд╛рдиреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА.
рдХрд┐рддреА рд╡реЗрд│ рдЖрд╣реЗ? рддреНрдпрд╛рдиреБрд╕рд╛рд░
рдкрдг рдирдВрддрд░ рддрдХреНрд░рд╛рд░реА рдпреЗрдК рд▓рд╛рдЧрд▓реНрдпрд╛ рдХреА рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╡реНрд╣рд╛рдпрд▓рд╛ рдЦреВрдк, рдЦреВрдк, рдЦреВрдк рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛! рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдЖрдореНрд╣реА "рдЦреВрдк, рдЦреВрдк, рдЦреВрдк рд▓рд╛рдВрдм" рдореНрд╣рдгрдЬреЗ рдХрд╛рдп рдореЛрдЬрд╛рдпрдЪреЗ рдард░рд╡рд▓реЗ. рдЖрдгрд┐ рдЖрдореНрд╣реА рдпрд╛рд╕рд╛рдареА рдлрд╛рдпрд░рдмреЗрд╕ рдЯреНрд░реЗрд╕ рд╡рд╛рдкрд░рд▓рд╛
рд╣рд╛ рд╕реНрдЯрдБрдбрд░реНрдб рдЯреНрд░реЗрд╕ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдШрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдгрд╛рдкрд╛рд╕реВрди рдЖрдгрд┐ рдкрд╣рд┐рд▓реНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдЪрд╛ onResume() рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖рдгрд╛рджрд░рдореНрдпрд╛рдирдЪрд╛ рд╡реЗрд│ рдореЛрдЬрддреЛ. рдлрд╛рдпрд░рдмреЗрд╕ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдпрд╛ рдореЗрдЯреНрд░рд┐рдХрд▓рд╛ _app_start рдореНрд╣рдгрддрд╛рдд. рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА:
- 95 рд╡реНрдпрд╛ рдкрд░реНрд╕реЗрдВрдЯрд╛рдЗрд▓рдЪреНрдпрд╛ рд╡рд░реАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ рдЬрд╡рд│рдкрд╛рд╕ 20 рд╕реЗрдХрдВрдж (рдХрд╛рд╣реА рдЬрд╛рд╕реНрдд рдЬрд╛рд╕реНрдд) рдЖрд╣реЗ, рдордзреНрдпрдо рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ 5 рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдХрдореА рдЕрд╕реВрдирд╣реА.
- рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡реЗрд│ рд╣реЗ рд╕реНрдерд┐рд░ рдореВрд▓реНрдп рдирд╕рддреЗ, рдкрд░рдВрддреБ рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рд╡рд╛рдврддреЗ. рдкрд░рдВрддреБ рдХрдзреАрдХрдзреА рдереЗрдВрдм рдЕрд╕рддрд╛рдд. рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рдЪреЗ рдкреНрд░рдорд╛рдг 90 рджрд┐рд╡рд╕рд╛рдВрдкрд░реНрдпрдВрдд рд╡рд╛рдврд╡рд▓реЗ тАЛтАЛрддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдирдореБрдирд╛ рдЖрдврд│рд▓рд╛.
рдордирд╛рдд рджреЛрди рд╡рд┐рдЪрд╛рд░ рдЖрд▓реЗ:
- рдХрд╛рд╣реАрддрд░реА рдЧрд│рдд рдЖрд╣реЗ.
- рд╣реЗ "рдХрд╛рд╣реАрддрд░реА" рд░рд┐рд▓реАрдЭ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рд░реАрд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдирдВрддрд░ рдкреБрдиреНрд╣рд╛ рд▓реАрдХ рд╣реЛрддреЗ.
"рдХрджрд╛рдЪрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХрд╛рд╣реАрддрд░реА," рдЖрдореНрд╣реА рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ рдЖрдореНрд╣реА рдмрд░реЛрдмрд░ рд╣реЛрддреЛ. рдкреНрд░рдердо, рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЕрд╢реЗ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рддреЛ; рд╕реНрдерд▓рд╛рдВрддрд░ рджрд░рдореНрдпрд╛рди рдЖрдореНрд╣реА рддреЗ рд╕рд╛рдл рдХрд░рддреЛ. рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рдЬреЗрд╡реНрд╣рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд░реВ рд╣реЛрддреЛ рддреЗрд╡реНрд╣рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдПрдХрддреНрд░ рдмрд╕рддреЗ.
Realm рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдХрд╛рдп рдЪреВрдХ рдЖрд╣реЗ
рдЖрдореНрд╣реА рдкреНрд░рдердо рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рдирдкрд╛рд╕реВрди рдЖрдгрд┐ рд╕рдХреНрд░рд┐рдп рд╡рд╛рдкрд░рд╛рджрд░рдореНрдпрд╛рди рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдЬреАрд╡рдирд╛рдд рдХрд╢реА рдмрджрд▓рддреЗ рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рддреБрдореНрд╣реА 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