แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒกแƒฌแƒ แƒแƒค แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ แƒ”แƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒแƒก แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜. แƒ—แƒฃ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒกแƒ”แƒ•แƒ“แƒแƒก แƒ“แƒ แƒ’แƒแƒ‘แƒ แƒแƒ–แƒ”แƒ‘แƒแƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒแƒคแƒฃแƒญแƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒแƒœ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ“แƒแƒ™แƒแƒ แƒ’แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜, แƒกแƒแƒœแƒแƒ› แƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒก.

แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› Dodo Pizza แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒกแƒแƒจแƒฃแƒแƒšแƒแƒ“ 3 แƒฌแƒแƒ›แƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— โ€žแƒ˜แƒฆแƒ‘แƒšแƒ˜แƒแƒœแƒกโ€œ แƒ™แƒ˜ 15-20 แƒฌแƒแƒ›แƒ˜.

แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒแƒ แƒ˜แƒก แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒ˜ แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜แƒ—: Realm แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ–แƒ แƒ“แƒแƒ–แƒ”, แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒจแƒ”แƒ•แƒ™แƒ แƒ˜แƒ‘แƒ”แƒ— แƒ—แƒแƒ•แƒ˜ แƒ“แƒ แƒ“แƒแƒ•แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜
แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜: แƒ›แƒแƒฅแƒกแƒ˜แƒ› แƒ™แƒแƒฉแƒ˜แƒœแƒ™แƒ˜แƒœแƒ˜ โ€” Android-แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ Dodo Pizza-แƒจแƒ˜.

แƒกแƒแƒ›แƒ˜ แƒฌแƒแƒ›แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฎแƒแƒขแƒฃแƒšแƒแƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก onResume()-แƒ›แƒ“แƒ” แƒแƒ แƒ˜แƒก แƒฃแƒกแƒแƒกแƒ แƒฃแƒšแƒแƒ‘แƒ. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ™แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ 15-20 แƒฌแƒแƒ›แƒก แƒแƒฆแƒฌแƒ”แƒ•แƒ“แƒ. แƒ แƒแƒ’แƒแƒ  แƒแƒ แƒ˜แƒก แƒ”แƒก แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜?

แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ™แƒšแƒ” แƒ แƒ”แƒ–แƒ˜แƒฃแƒ›แƒ” แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ“แƒ แƒ แƒแƒ  แƒแƒฅแƒ•แƒก
แƒฉแƒ•แƒ”แƒœแƒ˜ Realm แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒฃแƒกแƒแƒกแƒ แƒฃแƒšแƒแƒ“ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒแƒ  แƒฌแƒแƒ˜แƒจแƒแƒšแƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒแƒ“แƒ. แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ แƒ—แƒแƒœแƒ“แƒแƒ—แƒแƒœ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ. แƒ›แƒ”แƒ แƒ” แƒ’แƒแƒ•แƒแƒกแƒฌแƒแƒ แƒ”แƒ— แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ แƒ›แƒ˜แƒ–แƒแƒœแƒก แƒ›แƒ˜แƒแƒฆแƒฌแƒ˜แƒ - 1 แƒฌแƒแƒ›แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒฎแƒ“แƒ แƒ“แƒ แƒแƒฆแƒแƒ  แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ. แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜ แƒ“แƒ แƒแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ - แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ“แƒ แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜.

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜

แƒ“แƒฆแƒ”แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒ แƒ˜แƒงแƒแƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒ”แƒฎแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ‘แƒ˜แƒšแƒฃแƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก. แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ—แƒแƒœ แƒ“แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒแƒกแƒ—แƒแƒœ แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ” แƒžแƒ˜แƒชแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ—แƒฃ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ, แƒžแƒ˜แƒชแƒ แƒชแƒฎแƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฎแƒšแƒ แƒกแƒฃแƒ แƒก แƒญแƒแƒ›แƒ, แƒ“แƒ˜แƒ“แƒฎแƒแƒœแƒก แƒšแƒแƒ“แƒ˜แƒœแƒ˜ แƒแƒ  แƒ›แƒแƒฃแƒฌแƒ”แƒ•แƒก. แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒœแƒชแƒ“แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ—แƒฃ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ 20 แƒฌแƒแƒ›แƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒฎแƒแƒœแƒ˜ แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒžแƒ˜แƒชแƒแƒก แƒšแƒแƒ“แƒ˜แƒœแƒ˜?

แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ—แƒ•แƒ˜แƒ—แƒแƒœ แƒ“แƒแƒ•แƒ“แƒ”แƒฅแƒ˜แƒ— แƒ˜แƒ› แƒคแƒแƒฅแƒขแƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒจแƒ”, แƒ แƒแƒ› แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฌแƒแƒ›แƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ“แƒ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒกแƒฎแƒ•แƒ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒฉแƒ˜แƒ•แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ›แƒ”แƒœแƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœ แƒฎแƒแƒœแƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ“แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜แƒ— แƒแƒ› แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒฃแƒ“แƒ›แƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ.

แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒฎแƒแƒœแƒ˜แƒ? แฒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— Google แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ, แƒ—แƒฃ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒชแƒ˜แƒ•แƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒก 5 แƒฌแƒแƒ›แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒ˜แƒ—แƒ•แƒšแƒ”แƒ‘แƒ "แƒ—แƒ˜แƒ—แƒฅแƒแƒก แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒแƒ“". Dodo Pizza Android แƒแƒžแƒ˜ แƒแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ“แƒ (Firebase แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— _app_start) แƒ–แƒ” แƒชแƒ˜แƒ•แƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒแƒ“ 3 แƒฌแƒแƒ›แƒจแƒ˜ - "แƒแƒ แƒช แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜, แƒแƒ แƒช แƒ˜แƒกแƒ” แƒกแƒแƒจแƒ˜แƒœแƒ”แƒšแƒ˜", แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒ‘แƒแƒ‘แƒ”แƒœ.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ แƒฉแƒ˜แƒ•แƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ› แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ, แƒซแƒแƒšแƒ˜แƒแƒœ, แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ! แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒ’แƒแƒ’แƒ•แƒ”แƒ–แƒแƒ›แƒ แƒ แƒ แƒแƒ แƒ˜แƒก โ€žแƒซแƒแƒšแƒ˜แƒแƒœ, แƒซแƒแƒšแƒ˜แƒแƒœ, แƒซแƒแƒšแƒ˜แƒแƒœ แƒ’แƒ แƒซแƒ”แƒšแƒ˜โ€œ. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ— Firebase แƒ™แƒ•แƒแƒšแƒ˜ แƒแƒžแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒ™แƒ•แƒแƒšแƒ˜.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

แƒ”แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒšแƒ˜ แƒ–แƒแƒ›แƒแƒ•แƒก แƒ“แƒ แƒแƒก แƒ˜แƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒก แƒจแƒแƒ แƒ˜แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒฎแƒกแƒœแƒ˜แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก onResume() แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒจแƒแƒ แƒ˜แƒก. Firebase Console-แƒจแƒ˜ แƒแƒ› แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒแƒก แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ _app_start. แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ›:

  • แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ 95-แƒ” แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒฃแƒšแƒ–แƒ” แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก 20 แƒฌแƒแƒ›แƒ˜ (แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒฃแƒคแƒ แƒ แƒ’แƒ แƒซแƒ”แƒšแƒ˜), แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒชแƒ˜แƒ•แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ แƒ“แƒ แƒ 5 แƒฌแƒแƒ›แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ.
  • แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ”แƒ—แƒ”แƒ‘แƒ˜. แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ”แƒ— แƒ”แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒ–แƒแƒ แƒ“แƒ”แƒ— แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜ 90 แƒ“แƒฆแƒ”แƒ›แƒ“แƒ”.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

แƒแƒ แƒ˜ แƒแƒ–แƒ แƒ˜ แƒ›แƒแƒ›แƒ˜แƒ•แƒ˜แƒ“แƒ แƒ—แƒแƒ•แƒจแƒ˜:

  1. แƒ แƒแƒฆแƒแƒช แƒŸแƒแƒœแƒแƒ•แƒก.
  2. แƒ”แƒก "แƒ แƒแƒฆแƒแƒช" แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒกแƒ”แƒ• แƒ’แƒแƒŸแƒแƒœแƒแƒ•แƒก.

โ€žแƒแƒšแƒ‘แƒแƒ— แƒ แƒแƒฆแƒแƒช แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜แƒโ€œ, แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ“แƒ˜แƒ— แƒ“แƒ แƒ›แƒแƒ แƒ—แƒแƒšแƒ˜ แƒ•แƒ˜แƒงแƒแƒ•แƒ˜แƒ—. แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒฅแƒ”แƒจแƒ˜; แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ•แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒ— แƒ›แƒแƒก. แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒจแƒ˜ แƒฏแƒ“แƒ”แƒ‘แƒ.

แƒ แƒ แƒญแƒ˜แƒ แƒก Realm แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— Realm แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜ แƒกแƒขแƒ”แƒขแƒ แƒแƒœ แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ“แƒ แƒœแƒแƒ—แƒšแƒแƒ“ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒฎแƒกแƒœแƒ˜แƒ— แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— Realm Studio. ADB-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“ แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— Realm แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜:

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

แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ“แƒ แƒแƒก แƒ“แƒแƒ•แƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒก, แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜
แƒกแƒฃแƒ แƒแƒ—แƒ–แƒ” แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ Realm Studio-แƒก แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก: แƒ›แƒแƒ แƒชแƒฎแƒœแƒ˜แƒ• - แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ‘แƒแƒ–แƒ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒแƒ แƒฏแƒ•แƒœแƒ˜แƒ• - แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒฉแƒแƒœแƒก, แƒ แƒแƒ› แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ ImageEntity ะธ MoneyType แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ (แƒกแƒ™แƒ แƒ˜แƒœแƒจแƒแƒขแƒ˜ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก).

แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ–แƒ แƒ“แƒแƒกแƒ แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก แƒจแƒแƒ แƒ˜แƒก

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒฃแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ แƒ–แƒ แƒ“แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒชแƒฃแƒ“แƒ˜แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒก แƒ”แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ–แƒ”? แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ–แƒแƒ›แƒ•แƒ ActivityManager-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ— แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ. Android 4.4-แƒ“แƒแƒœ แƒ›แƒแƒงแƒแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜, logcat แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒก แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒ— แƒ“แƒ แƒ“แƒ แƒแƒก. แƒ”แƒก แƒ“แƒ แƒ แƒฃแƒ“แƒ แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒแƒšแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒ แƒ”แƒœแƒ“แƒ”แƒ แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ›แƒ“แƒ”. แƒแƒ› แƒ“แƒ แƒแƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒแƒ•แƒšแƒ”แƒœแƒ”แƒ‘แƒ˜:

  • แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ— แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜.
  • แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ.
  • แƒแƒฅแƒขแƒ˜แƒ•แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ.
  • แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ.
  • แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ แƒ”แƒœแƒ“แƒ”แƒ แƒ˜.

แƒ’แƒ•แƒ”แƒ แƒ’แƒ”แƒ‘แƒ. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— ADB-แƒก -S แƒ“แƒ -W แƒ“แƒ แƒแƒจแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ—:

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 แƒ›แƒ‘-แƒ›แƒ“แƒ”. แƒกแƒแƒ”แƒ แƒ—แƒ แƒฏแƒแƒ›แƒจแƒ˜, แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ› แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ (แƒชแƒ˜แƒ•แƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒ–แƒ แƒ“แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“) แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ–แƒแƒ›แƒ. แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒฐแƒ˜แƒžแƒแƒ—แƒ”แƒ–แƒ แƒฎแƒ”แƒšแƒจแƒ˜. แƒแƒฎแƒšแƒ แƒ“แƒแƒ แƒฉแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ”แƒ— แƒแƒ›แƒแƒ’แƒ•แƒ”แƒฆแƒ โ€žแƒ’แƒแƒŸแƒแƒœแƒ•แƒ”แƒ‘แƒ˜โ€œ แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ“แƒแƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒ“แƒ แƒ—แƒฃ แƒแƒ แƒ แƒ”แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ’แƒแƒฃแƒ—แƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ–แƒ แƒ“แƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜

"แƒ’แƒแƒŸแƒแƒœแƒ•แƒ˜แƒก" แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒแƒ›แƒ“แƒ”, แƒฆแƒ˜แƒ แƒก แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ แƒแƒขแƒแƒ› แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒœแƒ”แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ•แƒ˜แƒฎแƒกแƒ”แƒœแƒแƒ— แƒ แƒ แƒแƒ แƒ˜แƒก แƒกแƒแƒ›แƒ”แƒคแƒ.

Realm แƒแƒ แƒ˜แƒก แƒแƒ แƒแƒ แƒ”แƒšแƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒแƒฆแƒฌแƒ”แƒ แƒแƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ Android-แƒ–แƒ” ORM-แƒ˜แƒก แƒ แƒ”แƒšแƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, Realm แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒก แƒฃแƒจแƒฃแƒแƒšแƒแƒ“ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ—แƒ แƒ“แƒ แƒ แƒฃแƒ™แƒ”แƒ‘แƒ˜แƒ—. แƒ”แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ˜แƒ“แƒแƒœ แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒฌแƒ แƒแƒคแƒแƒ“, แƒ แƒแƒช แƒแƒ แƒ˜แƒก Realm-แƒ˜แƒก แƒกแƒ˜แƒซแƒšแƒ˜แƒ”แƒ แƒ” แƒ“แƒ แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒ˜แƒก แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒšแƒ˜.

(แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ”แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒ›แƒ”แƒขแƒ˜ Realm-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ cool-แƒจแƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒแƒœ แƒ›แƒแƒ—แƒจแƒ˜ แƒแƒ™แƒแƒ“แƒ”แƒ›แƒ˜แƒ”แƒ‘แƒ˜).

แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ›แƒ˜แƒฉแƒ•แƒ”แƒฃแƒšแƒ˜แƒ แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒ แƒ”แƒšแƒแƒชแƒ˜แƒฃแƒ  แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ—แƒแƒœ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, ORM แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒ˜ SQL-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ). แƒ“แƒ แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ แƒแƒ›, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ, แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒ˜แƒฉแƒœแƒ”แƒฃแƒšแƒ˜แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜.

แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒ˜แƒ—แƒฎแƒแƒ•แƒ. แƒ”แƒก แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒ•แƒ ะธ แƒกแƒฎแƒ•แƒแƒ›แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒแƒ“แƒ. แƒ˜แƒงแƒ แƒ’แƒแƒœแƒชแƒ“แƒ, แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒšแƒ” แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒแƒ“แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒ“แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ แƒซแƒšแƒ˜แƒ”แƒ แƒ˜ แƒ“แƒ แƒกแƒฃแƒกแƒขแƒ˜ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒแƒจแƒ˜, แƒ แƒแƒช แƒแƒกแƒ”แƒ•แƒ” แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ›แƒแƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ“แƒ แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก. แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ“แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ˜แƒงแƒ แƒแƒ› แƒกแƒแƒฅแƒ›แƒ”แƒจแƒ˜ แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ› แƒ“แƒ แƒแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒฉแƒ”แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒจแƒ˜แƒ“แƒ แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒแƒŸแƒแƒœแƒ•แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒฃแƒ แƒ˜ แƒฌแƒแƒจแƒšแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”

แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ แƒแƒ’แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ, แƒ—แƒฃ แƒ”แƒงแƒ แƒ“แƒœแƒแƒ‘แƒ˜แƒ— แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš แƒ™แƒแƒกแƒ™แƒแƒ“แƒฃแƒ  แƒฌแƒแƒจแƒšแƒแƒก? แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜ Realm แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒœแƒ“แƒ แƒฌแƒแƒ˜แƒจแƒแƒšแƒแƒก.
แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— (แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก) แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก. แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ 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()) แƒ˜แƒ’แƒ˜แƒ•แƒ” ID-แƒ˜แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ’แƒแƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ˜แƒ“แƒ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ (image, customizationEntity แƒ“แƒ cartComboProducts) แƒ“แƒแƒ™แƒแƒ แƒ’แƒแƒ•แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒก แƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ—แƒแƒœ แƒ“แƒ แƒ“แƒแƒ แƒฉแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜.

แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒ“แƒแƒ™แƒแƒ แƒ’แƒฃแƒšแƒ˜แƒ, แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒแƒ  แƒ•แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒ— แƒ›แƒแƒ— แƒ“แƒ แƒแƒ  แƒ•แƒจแƒšแƒ˜แƒ— แƒ›แƒแƒ— (แƒ—แƒฃ แƒแƒ  แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ›แƒแƒ— แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฌแƒ•แƒ“แƒแƒ›แƒแƒก แƒแƒœ แƒแƒ  แƒ’แƒแƒ•แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒ— แƒ›แƒ—แƒ”แƒš โ€žแƒชแƒฎแƒ แƒ˜แƒšแƒกโ€œ). แƒฉแƒ•แƒ”แƒœ แƒแƒ›แƒแƒก แƒ•แƒฃแƒฌแƒแƒ“แƒ”แƒ— "แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ".

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— 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()
}
// ะธ ะฟะพั‚ะพะผ ัƒะถะต ัะพั…ั€ะฐะฝัะตะผ

แƒ—แƒฃ แƒแƒ›แƒแƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒกแƒ” แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒœแƒ“แƒ. แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒกแƒคแƒ”แƒ แƒแƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—, customizationEntity แƒ“แƒ 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-แƒจแƒ˜. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ แƒจแƒ แƒแƒ›แƒแƒขแƒ”แƒ•แƒแƒ“แƒ˜แƒ, แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒกแƒ™แƒ˜ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒกแƒแƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ˜แƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ.

แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒงแƒแƒ•แƒ˜, แƒ แƒแƒ› แƒแƒ  แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ“แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ.

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ˜แƒœแƒ“แƒ, แƒ แƒแƒ› แƒ แƒแƒฆแƒแƒช แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ แƒ”แƒคแƒšแƒ”แƒฅแƒกแƒ˜แƒ. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒ˜แƒแƒ แƒแƒ— แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒแƒ แƒ˜แƒก แƒ˜แƒก 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, แƒ แƒแƒ“แƒ’แƒแƒœ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒจแƒแƒ‘แƒ”แƒš แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒก แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ‘แƒฃแƒ“แƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜. แƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ˜แƒ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒ”แƒก แƒ“แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— id-แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒ”แƒœแƒ”แƒ แƒแƒชแƒ˜แƒ แƒแƒฎแƒแƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

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 แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒ“แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒœแƒ”แƒšแƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ โ€žแƒ™แƒแƒกแƒ™แƒแƒ“แƒฃแƒ แƒ˜ แƒฌแƒแƒจแƒšแƒ˜แƒ—โ€œ. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ•แƒแƒคแƒแƒกแƒ”แƒ‘แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ›แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒแƒ› แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒ–แƒ” _app_start แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— 90 แƒ“แƒฆแƒ˜แƒก แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒก แƒ“แƒ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—: แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ”แƒ“แƒ˜แƒแƒœแƒฃแƒ แƒ˜, แƒแƒกแƒ”แƒ•แƒ” แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ 95-แƒ” แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒฃแƒšแƒ–แƒ”, แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ™แƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒแƒฆแƒแƒ  แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ–แƒฆแƒแƒžแƒแƒ แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ˜แƒ’แƒ แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒกแƒแƒ›แƒ”แƒคแƒแƒจแƒ˜

แƒ—แƒฃ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒจแƒ•แƒ˜แƒ“แƒ“แƒฆแƒ˜แƒแƒœ แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒแƒก, _app_start แƒ›แƒ”แƒขแƒ แƒ˜แƒ™แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒแƒ“แƒ”แƒ™แƒ•แƒแƒขแƒฃแƒ แƒ˜ แƒ“แƒ 1 แƒฌแƒแƒ›แƒ–แƒ” แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ.

แƒแƒกแƒ”แƒ•แƒ” แƒฆแƒ˜แƒ แƒก แƒ˜แƒ›แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, Firebase แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ—แƒฃ _app_start-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ 5 แƒฌแƒแƒ›แƒก แƒแƒฆแƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ”แƒงแƒ แƒ“แƒœแƒแƒ— แƒแƒ›แƒแƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒจแƒ”แƒฎแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ“แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ˜แƒ’แƒ˜.

Realm แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒ แƒแƒ แƒ”แƒšแƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒก, ORM แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“, แƒ›แƒแƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒ™แƒแƒกแƒ™แƒแƒ“แƒฃแƒ แƒ˜ แƒฌแƒแƒจแƒšแƒ.

แƒ—แƒฃ แƒ”แƒก แƒ›แƒฎแƒ”แƒ“แƒ•แƒ”แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒแƒ  แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ“แƒแƒ‘แƒฃแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ“แƒ โ€žแƒ’แƒแƒŸแƒแƒœแƒแƒ•แƒกโ€œ. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ’แƒแƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒช แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ• แƒแƒ˜แƒกแƒแƒฎแƒ”แƒ‘แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒœแƒ”แƒšแƒ”แƒ‘แƒแƒ–แƒ” แƒแƒœ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ–แƒ”.

แƒ›แƒ” แƒ’แƒแƒ•แƒฃแƒ–แƒ˜แƒแƒ แƒ” แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒแƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ Realm-แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฏแƒ”แƒ  แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฃแƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒ–แƒ” แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒแƒœแƒ˜แƒ แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ”แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ›แƒ‘แƒแƒ‘แƒ”แƒœ, แƒ แƒแƒ› ะธ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ›แƒ‘แƒแƒ‘แƒ”แƒœ, แƒ แƒแƒ›. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒแƒ›แƒแƒœ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ“แƒแƒแƒฉแƒฅแƒแƒ แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ.

แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ˜แƒกแƒ แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒแƒฃแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ’แƒœแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ™แƒแƒกแƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒก แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ Realm-แƒจแƒ˜ แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒ—. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฅแƒ›แƒœแƒ˜แƒ— แƒแƒฎแƒแƒš แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ— แƒ”แƒก. แƒ“แƒ แƒ—แƒฃ แƒฃแƒ™แƒ•แƒ” แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Realm-แƒก, แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒ—แƒฃ แƒ’แƒแƒฅแƒ•แƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ