เชฌเชงเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฎเซเชฌเชพเชเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธเชฎเชพเช เชเชกเชชเซ เชฒเซเชเช เช เชจเซ เชชเซเชฐเชคเชฟเชญเชพเชตเชถเซเชฒ UI เชจเซ เชฎเชพเชจเซเชฏ เชฐเชพเชเซ เชเซ. เชเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฒเซเชจเซเช เชฅเชตเชพเชฎเชพเช เชฒเชพเชเชฌเซ เชธเชฎเชฏ เชฒเซ เชเซ, เชคเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชฆเชพเชธเซ เช เชจเซ เชเซเชธเซเชธเซ เชฅเชตเชพ เชฒเชพเชเซ เชเซ. เชคเชฎเซ เชเซเชฐเชพเชนเชเชจเชพ เช เชจเซเชญเชตเชจเซ เชธเชฐเชณเชคเชพเชฅเซ เชฌเชเชพเชกเซ เชถเชเซ เชเซ เช เชฅเชตเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชคเซ เชชเชนเซเชฒเชพเช เช เชคเซเชจเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชเซเชฎเชพเชตเซ เชถเชเซ เชเซ.
เช เชฎเซ เชเชเชตเชพเชฐ เชถเซเชงเซเชฏเซเช เชเซ เชกเซเชกเซ เชชเชฟเชเชพ เชเชชเชจเซ เชธเชฐเซเชฐเชพเชถ เชฒเซเชจเซเช เชฅเชตเชพเชฎเชพเช 3 เชธเซเชเชจเซเชกเชจเซ เชธเชฎเชฏ เชฒเชพเชเซ เชเซ เช เชจเซ เชเซเชเชฒเชพเช "เชจเชธเซเชฌเชฆเชพเชฐ เชฒเซเชเซ" เชฎเชพเชเซ เชคเซ 15-20 เชธเซเชเชจเซเชก เชฒเซ เชเซ.
เชเชเชจเซ เชจเซเชเซ เชธเซเชเชฆ เช เชเชค เชธเชพเชฅเซเชจเซ เชตเชพเชฐเซเชคเชพ เชเซ: เชฐเชฟเชฏเชฒเชฎ เชกเซเชเชพเชฌเซเชเชจเซ เชตเซเชฆเซเชงเชฟ เชตเชฟเชถเซ, เชฎเซเชฎเชฐเซ เชฒเซเช เชตเชฟเชถเซ, เช เชฎเซ เชเซเชตเซ เชฐเซเชคเซ เชจเซเชธเซเชเซเชก เชเชฌเซเชเซเชเซเชเซเชธ เชเชเช เชพ เชเชฐเซเชฏเชพ, เช เชจเซ เชชเชเซ เช เชฎเชพเชฐเซ เชเชพเชคเชจเซ เชเชเชธเชพเชฅเซ เชเซเชเชเซ เช เชจเซ เชฌเชงเซเช เช เซเช เชเชฐเซเชฏเซเช.
เชฒเซเช เชฒเซเชเช:เชฎเซเชเซเชธเชฟเชฎ เชเชพเชเชฟเชจเชเซเชจ - เชกเซเชกเซ เชชเชฟเชเชพ เชเชพเชคเซ เชเชจเซเชกเซเชฐเซเชเชก เชกเซเชตเชฒเชชเชฐ.
เชเชชเซเชฒเซเชเซเชถเชจ เชเชฏเชเชจ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเชตเชพเชฅเซ เชเชจเชฐเซเชเซเชฏเซเชฎ() เชธเซเชงเซเชจเซ เชชเซเชฐเชฅเชฎ เชชเซเชฐเชตเซเชคเซเชคเชฟเชจเซ เชคเซเชฐเชฃ เชธเซเชเชจเซเชก เช เชจเชเชค เชเซ. เช เชจเซ เชเซเชเชฒเชพเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฎเชพเชเซ, เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏ 15-20 เชธเซเชเชเชก เชธเซเชงเซ เชชเชนเซเชเชเซเชฏเซ. เช เชชเชฃ เชเซเชตเซ เชฐเซเชคเซ เชถเชเซเชฏ เชเซ?
เชเซเชฎเชจเซ เชชเชพเชธเซ เชตเชพเชเชเชตเชพเชจเซ เชธเชฎเชฏ เชจเชฅเซ เชคเซเชฎเชจเชพ เชฎเชพเชเซ เชเซเชฌ เช เชเซเชเชเซ เชธเชพเชฐเชพเชเชถ
เช
เชฎเชพเชฐเซเช เชเซเชทเซเชคเซเชฐ เชกเซเชเชพเชฌเซเช เช
เชตเชฟเชฐเชคเชชเชฃเซ เชตเชงเซเชฏเซเช. เชเซเชเชฒเชพเช เชจเซเชธเซเชเซเชก เชเชฌเซเชเซเชเซเชเซเชธ เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชจ เชนเชคเชพ, เชชเชฐเชเชคเซ เชธเชคเชค เชธเชเชเชฟเชค เชฅเชฏเชพ เชนเชคเชพ. เชเชชเซเชฒเชฟเชเซเชถเชจ เชถเชฐเซ เชฅเชตเชพเชจเซ เชธเชฎเชฏ เชงเซเชฎเซ เชงเซเชฎเซ เชตเชงเชคเซ เชเชฏเซ. เชชเชเซ เช
เชฎเซ เชคเซเชจเซ เช เซเช เชเชฐเซเชฏเซเช, เช
เชจเซ เชธเซเชเชพเชฐเซเชเช
เชชเชจเซ เชธเชฎเชฏ เชฒเชเซเชทเซเชฏ เชชเชฐ เชเชตเซเชฏเซ - เชคเซ 1 เชธเซเชเชเชกเชฅเซ เชเชเซ เชฅเช เชเชฏเซ เช
เชจเซ เชนเชตเซ เชตเชงเซเชฏเซ เชจเชนเซเช. เชฒเซเชเชฎเชพเช เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ เช
เชจเซ เชฌเซ เชเชเซเชฒเซ เชเซ - เชเช เชเชกเชชเซ เช
เชจเซ เชธเชพเชฎเชพเชจเซเชฏ.
เชธเชฎเชธเซเชฏเชพเชจเซ เชถเซเชง เช เชจเซ เชตเชฟเชถเซเชฒเซเชทเชฃ
เชเชเซ, เชเซเชเชชเชฃ เชฎเซเชฌเชพเชเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชกเชชเชฅเซ เชถเชฐเซ เชฅเชตเซ เชเซเชเช เช เชจเซ เชชเซเชฐเชคเชฟเชญเชพเชตเชถเซเชฒ เชนเซเชตเซ เชเซเชเช. เชชเชฐเชเชคเซ เชคเซ เชฎเชพเชคเซเชฐ เชฎเซเชฌเชพเชเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจ เชตเชฟเชถเซ เชจเชฅเซ. เชธเซเชตเชพ เช เชจเซ เชเชเชชเชจเซ เชธเชพเชฅเซเชจเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพเชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เช เชจเซเชญเชต เช เชเช เชเชเชฟเชฒ เชฌเชพเชฌเชค เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชกเชฟเชฒเชฟเชตเชฐเซเชจเซ เชเชกเชช เช เชชเชฟเชเชพ เชธเซเชตเชพ เชฎเชพเชเซเชจเชพ เชฎเซเชเซเชฏ เชธเซเชเชเซเชฎเชพเชเชจเซเช เชเช เชเซ. เชเซ เชกเชฟเชฒเชฟเชตเชฐเซ เชเชกเชชเซ เชเซ, เชคเซ เชชเชฟเชเชพ เชเชฐเชฎ เชฅเชถเซ, เช เชจเซ เชเซ เชเซเชฐเชพเชนเช เชนเชตเซ เชเชพเชตเชพ เชฎเชพเชเชเซ เชเซ เชคเซเชฃเซ เชตเชงเซ เชฐเชพเชน เชเซเชตเซ เชชเชกเชถเซ เชจเชนเซเช. เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ, เชฌเชฆเชฒเชพเชฎเชพเช, เชเชกเชชเซ เชธเซเชตเชพเชจเซ เช เชจเซเชญเซเชคเชฟ เชเชฐเชตเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ, เชเชพเชฐเชฃ เชเซ เชเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชฒเซเชจเซเช เชเชฐเชตเชพเชฎเชพเช เชฎเชพเชคเซเชฐ 20 เชธเซเชเชจเซเชกเชจเซ เชธเชฎเชฏ เชฒเชพเชเซ เชเซ, เชคเซ เชคเชฎเชพเชฐเซ เชชเชฟเชเชพ เชฎเชพเชเซ เชเซเชเชฒเซ เชธเชฎเชฏ เชฐเชพเชน เชเซเชตเซ เชชเชกเชถเซ?
เชถเชฐเซเชเชคเชฎเชพเช, เช เชฎเซ เชชเซเชคเซ เช เช เชนเชเซเชเชคเชจเซ เชธเชพเชฎเชจเซ เชเชฐเซ เชฐเชนเซเชฏเชพ เชนเชคเชพ เชเซ เชเซเชเชฒเซเชเชตเชพเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชฒเซเชจเซเช เชเชฐเชตเชพเชฎเชพเช เชฅเซเชกเซ เชธเซเชเชเชก เชฒเชพเชเซ, เช เชจเซ เชชเชเซ เช เชฎเชจเซ เช เชจเซเชฏ เชธเชพเชฅเซเชฆเชพเชฐเซเชจเซ เชซเชฐเชฟเชฏเชพเชฆเซ เชธเชพเชเชญเชณเชตเชพ เชฒเชพเชเซ เชเซ เชคเซ เชเซเชเชฒเซ เชธเชฎเชฏ เชฒเซ เชเซ. เชชเชฐเชเชคเซ เช เชฎเซ เช เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซเช เชธเชคเชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชเชฐเชตเชพเชฎเชพเช เช เชธเชฎเชฐเซเชฅ เชนเชคเชพ.
เชคเซ เชเซเชเชฒเซ เชธเชฎเชฏ เชเซ? เช
เชจเซเชธเชพเชฐ
เชชเชฐเชเชคเซ เชชเชเซ เชซเชฐเชฟเชฏเชพเชฆเซ เชฆเซเชเชพเชตเชพ เชฒเชพเชเซ เชเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชฒเซเชจเซเช เชเชฐเชตเชพเชฎเชพเช เชเซเชฌ เช, เชเซเชฌ เช เชฒเชพเชเชฌเซ เชธเชฎเชฏ เชฒเชพเชเซเชฏเซ! เชถเชฐเซเชเชคเชฎเชพเช, เช
เชฎเซ "เชเซเชฌ, เชเซเชฌ, เชเซเชฌ เชฒเชพเชเชฌเซ" เชถเซเช เชเซ เชคเซ เชฎเชพเชชเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช. เช
เชจเซ เช
เชฎเซ เช เชฎเชพเชเซ เชซเชพเชฏเชฐเชฌเซเช เชเซเชฐเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ
เช เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชเซเชฐเซเชธ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซเชฒเซ เชคเซ เชเซเชทเชฃ เช
เชจเซ เชชเซเชฐเชฅเชฎ เชชเซเชฐเชตเซเชคเซเชคเชฟเชจเซ onResume() เชเชเซเชเชฟเชเซเชฏเซเช เชฅเชพเชฏ เชคเซ เชเซเชทเชฃ เชตเชเซเชเซเชจเชพ เชธเชฎเชฏเชจเซ เชฎเชพเชชเซ เชเซ. เชซเชพเชฏเชฐเชฌเซเช เชเชจเซเชธเซเชฒเชฎเชพเช เช เชฎเซเชเซเชฐเชฟเชเชจเซ _app_start เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชคเซ เชฌเชนเชพเชฐ เชเชตเซเชฏเซเช เชเซ เชเซ:
- เชธเชฐเซเชฐเชพเชถ เชเซเชฒเซเชก เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏ 95 เชธเซเชเชจเซเชกเชฅเซ เชเชเซ เชนเซเชตเชพ เชเชคเชพเช, 20เชฎเซ เชชเชฐเซเชธเซเชจเซเชเชพเชเชฒเชฅเซ เชเชชเชฐเชจเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฎเชพเชเซ เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏ เชฒเชเชญเช 5 เชธเซเชเชจเซเชก (เชเซเชเชฒเชพเช เชตเชงเซ เชฒเชพเชเชฌเซ) เชเซ.
- เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏ เช เชธเชคเชค เชฎเซเชฒเซเชฏ เชจเชฅเซ, เชชเชฐเชเชคเซ เชธเชฎเชฏ เชธเชพเชฅเซ เชตเชงเซ เชเซ. เชชเชฐเชเชคเซ เชเซเชเชฒเซเชเชตเชพเชฐ เชเซเชชเชพเช เชนเซเชฏ เชเซ. เชเซเชฏเชพเชฐเซ เช เชฎเซ เชตเชฟเชถเซเชฒเซเชทเชฃเชจเซ เชธเซเชเซเชฒ เชตเชงเชพเชฐเซเชจเซ 90 เชฆเชฟเชตเชธ เชเชฐเซเชฏเซ เชคเซเชฏเชพเชฐเซ เช เชฎเชจเซ เช เชชเซเชเชฐเซเชจ เชฎเชณเซ.
เชฎเชจเชฎเชพเช เชฌเซ เชตเชฟเชเชพเชฐเซ เชเชตเซเชฏเชพ:
- เชเชเชเช เชฒเซเช เชฅเช เชฐเชนเซเชฏเซเช เชเซ.
- เช "เชเชเชเช" เชชเซเชฐเชเชพเชถเชจ เชชเชเซ เชฐเซเชธเซเช เชฅเชพเชฏ เชเซ เช เชจเซ เชชเชเซ เชซเชฐเซเชฅเซ เชฒเซเช เชฅเชพเชฏ เชเซ.
"เชเชฆเชพเช เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซ เชเชเชเช," เช เชฎเซ เชตเชฟเชเชพเชฐเซเชฏเซเช, เช เชจเซ เช เชฎเซ เชธเชพเชเชพ เชนเชคเชพ. เชธเซเชชเซเชฐเชฅเชฎ, เช เชฎเซ เชเซเชถ เชคเชฐเซเชเซ เชกเซเชเชพเชฌเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช; เชธเซเชฅเชณเชพเชเชคเชฐ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช เชฎเซ เชคเซเชจเซ เชธเชพเชซ เชเชฐเซเช เชเซเช. เชฌเซเชเซเช, เชเซเชฏเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชถเชฐเซ เชฅเชพเชฏ เชเซ เชคเซเชฏเชพเชฐเซ เชกเซเชเชพเชฌเซเช เชฒเซเชก เชฅเชพเชฏ เชเซ. เชฌเชงเซเช เชเชเชธเชพเชฅเซ เชฌเชเชงเชฌเซเชธเซ เชเซ.
Realm เชกเซเชเชพเชฌเซเชเชฎเชพเช เชถเซเช เชเซเชเซเช เชเซ
เช
เชฎเซ เชคเชชเชพเชธเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช เชเซ เชกเซเชเชพเชฌเซเชเชจเซ เชธเชพเชฎเชเซเชฐเซ เชชเซเชฐเชฅเชฎ เชเชจเซเชธเซเชเซเชฒเซเชถเชจเชฅเซ เช
เชจเซ เชธเชเซเชฐเชฟเชฏ เชเชชเชฏเซเช เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเชพ เชเซเชตเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเซเชตเซ เชฐเซเชคเซ เชฌเชฆเชฒเชพเชฏ เชเซ. เชคเชฎเซ เชฐเชฟเชฏเชฒเชฎ เชกเซเชเชพเชฌเซเชเชจเซ เชธเชพเชฎเชเซเชฐเซเช เชฆเซเชตเชพเชฐเชพ เชเซเช เชถเชเซ เชเซ
adb exec-out run-as ${PACKAGE_NAME} cat files/${DB_NAME}
เช เชฒเช-เช เชฒเช เชธเชฎเชฏเซ เชกเซเชเชพเชฌเซเชเชจเซ เชธเชพเชฎเชเซเชฐเซเช เชเซเชฏเชพ เชชเชเซ, เช เชฎเชจเซ เชเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช เชเซ เชเซเชเซเชเชธ เชชเซเชฐเชเชพเชฐเชจเซ เชตเชธเซเชคเซเชเชจเซ เชธเชเชเซเชฏเชพ เชธเชคเชค เชตเชงเซ เชฐเชนเซ เชเซ.
เชเชฟเชคเซเชฐ เชฌเซ เชซเชพเชเชฒเซ เชฎเชพเชเซ เชฐเชฟเชฏเชฒเชฎ เชธเซเชเซเชกเชฟเชฏเซเชจเซ เชเซเชเชกเซ เชฌเชคเชพเชตเซ เชเซ: เชกเชพเชฌเซ เชฌเชพเชเซเช - เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เชชเชเซ เชฅเซเชกเชพ เชธเชฎเชฏ เชชเชเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชงเชพเชฐ, เชเชฎเชฃเซ เชฌเชพเชเซเช - เชธเชเซเชฐเชฟเชฏ เชเชชเชฏเซเช เชชเชเซ. เชคเซ เชเซเช เชถเชเชพเชฏ เชเซ เชเซ เชตเชธเซเชคเซเชเชจเซ เชธเชเชเซเชฏเชพ ImageEntity
ะธ MoneyType
เชจเซเชเชงเชชเชพเชคเซเชฐ เชฐเซเชคเซ เชตเซเชฆเซเชงเชฟ เชชเชพเชฎเซ เชเซ (เชธเซเชเซเชฐเซเชจเชถเซเช เชฆเชฐเซเช เชชเซเชฐเชเชพเชฐเชจเซ เชตเชธเซเชคเซเชเชจเซ เชธเชเชเซเชฏเชพ เชฌเชคเชพเชตเซ เชเซ).
เชกเซเชเชพเชฌเซเช เชตเซเชฆเซเชงเชฟ เช เชจเซ เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏ เชตเชเซเชเซเชจเซ เชธเชเชฌเชเชง
เช เชจเชฟเชฏเชเชคเซเชฐเชฟเชค เชกเซเชเชพเชฌเซเช เชตเซเชฆเซเชงเชฟ เชเซเชฌ เช เชเชฐเชพเชฌ เชเซ. เชชเชฐเชเชคเซ เช เชเชชเซเชฒเชฟเชเซเชถเชจ เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏเชจเซ เชเซเชตเซ เชฐเซเชคเซ เช เชธเชฐ เชเชฐเซ เชเซ? เชเชเซเชเชฟเชตเชฟเชเซ เชฎเซเชจเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชเชจเซ เชฎเชพเชชเชตเซเช เชเชเชฆเชฎ เชธเชฐเชณ เชเซ. เชเชจเซเชกเซเชฐเซเชเชก 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 MB เชฅเซ 15 MB เชธเซเชงเซ เชตเชงเซ เชนเชคเซ. เชเซเชฒ เชฎเชณเซเชจเซ, เชคเซ เชคเชพเชฐเชฃ เชเชชเซ เชเซ เชเซ เชธเชฎเชฏ เชเชคเชพเช (เช เชเชกเชพเชจเซ เชถเชฐเซเชเชคเชจเซ เชตเซเชฆเซเชงเชฟ เชธเชพเชฅเซ), เชเชชเซเชฒเชฟเชเซเชถเชจ เชฒเซเชเช เชฅเชตเชพเชจเซ เชธเชฎเชฏ เช
เชจเซ เชกเซเชเชพเชฌเซเชเชจเซเช เชเชฆ เชฌเชเชจเซเชฎเชพเช เชตเชงเชพเชฐเซ เชฅเชฏเซ เชเซ. เช
เชฎเชพเชฐเชพ เชนเชพเชฅ เชชเชฐ เชเช เชชเซเชฐเซเชตเชงเชพเชฐเชฃเชพ เชเซ. เชนเชตเซ เชเซ เชฌเชพเชเซ เชนเชคเซเช เชคเซ เช
เชตเชฒเชเชฌเชจเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเชตเชพเชจเซเช เชนเชคเซเช. เชคเซเชฅเซ, เช
เชฎเซ "เชฒเซเชเซเชธ" เชฆเซเชฐ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช เช
เชจเซ เชเซเช เชเซ เชถเซเช เชเชจเชพเชฅเซ เชฒเซเชเชเชจเซ เชตเซเช เชฎเชณเชถเซ.
เช เชจเชเชค เชกเซเชเชพเชฌเซเช เชตเซเชฆเซเชงเชฟ เชฎเชพเชเซเชจเชพเช เชเชพเชฐเชฃเซ
"เชฒเซเชเซเชธ" เชจเซ เชฆเซเชฐ เชเชฐเชคเชพ เชชเชนเซเชฒเชพ, เชคเซ เชธเชฎเชเชตเซเช เชฏเซเชเซเชฏ เชเซ เชเซ เชคเซเช เชถเชพ เชฎเชพเชเซ เชชเซเชฐเชฅเชฎ เชธเซเชฅเชพเชจเซ เชฆเซเชเชพเชฏเชพ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชพเชฒเซ เชฏเชพเชฆ เชเชฐเซเช เชเซ เชเซเชทเซเชคเซเชฐ เชถเซเช เชเซ.
เชเซเชทเซเชคเซเชฐ เช เชฌเชฟเชจ-เชธเชเชฌเชเชงเชฟเชค เชกเซเชเชพเชฌเซเช เชเซ. เชคเซ เชคเชฎเชจเซ เชเชฌเซเชเซเชเซเชเซเชธ เชตเชเซเชเซเชจเชพ เชธเชเชฌเชเชงเซเชจเซ Android เชชเชฐ เชเซเชเชฒเชพ ORM เชฐเชฟเชฒเซเชถเชจเชฒ เชกเซเชเชพเชฌเซเชธเซเชธ เชตเชฐเซเชฃเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ เชคเซ เช เชฐเซเชคเซ เชตเชฐเซเชฃเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชคเซ เช เชธเชฎเชฏเซ, เชฐเชฟเชฏเชฒเชฎ เชเชเชพเชฎเชพเช เชเชเชพ เชฐเซเชชเชพเชเชคเชฐเชฃเซ เช เชจเซ เชฎเซเชชเชฟเชเชเซเชธ เชธเชพเชฅเซ เชเชฌเซเชเซเชเซเชเซเชธเชจเซ เชธเซเชงเซ เชฎเซเชฎเชฐเซเชฎเชพเช เชธเซเชเซเชฐ เชเชฐเซ เชเซ. เช เชคเชฎเชจเซ เชกเชฟเชธเซเชเชฎเชพเชเชฅเซ เชกเซเชเชพเชจเซ เชเซเชฌ เช เชเชกเชชเชฅเซ เชตเชพเชเชเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ, เชเซ เชเซเชทเซเชคเซเชฐเชจเซ เชถเชเซเชคเชฟ เชเซ เช เชจเซ เชคเซ เชถเชพ เชฎเชพเชเซ เชชเซเชฐเชฟเชฏ เชเซ.
(เช เชฒเซเชเชจเชพ เชนเซเชคเซเช เชฎเชพเชเซ, เช เชตเชฐเซเชฃเชจ เช
เชฎเชพเชฐเชพ เชฎเชพเชเซ เชชเซเชฐเชคเซเช เชนเชถเซ. เชคเชฎเซ เชเซเชฒเชฎเชพเช เชเซเชทเซเชคเซเชฐ เชตเชฟเชถเซ เชตเชงเซ เชตเชพเชเชเซ เชถเชเซ เชเซ
เชเชฃเชพ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฐเชฟเชฒเซเชถเชจเชฒ เชกเซเชเชพเชฌเซเชธเซเชธ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชนเซเชก เชนเซเช เชณ SQL เชธเชพเชฅเซ ORM เชกเซเชเชพเชฌเซเชธเซเชธ) เชธเชพเชฅเซ เชตเชงเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชตเชพเชฏเซเชฒเชพ เชเซ. เช เชจเซ เชเชพเชธเซเชเซเชกเชฟเชเช เชกเซเชเชพ เชเชพเชขเซ เชจเชพเชเชตเชพ เชเซเชตเซ เชตเชธเซเชคเซเช เชเชฃเซเชตเชพเชฐ เชเชชเซเชฒ เชเซเชตเซ เชฒเชพเชเซ เชเซ. เชชเชฐเชเชคเซ เชเซเชทเซเชคเซเชฐเชฎเชพเช เชจเชนเซเช.
เชฎเชพเชฐเซเช เชฆเซเชตเชพเชฐเชพ, เชเชพเชธเซเชเซเชก เชเชพเชขเซ เชจเชพเชเชตเชพเชจเซ เชธเซเชตเชฟเชงเชพเชจเซ เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เชชเซเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช
เชเชพเชธเซเชเซเชกเชฟเชเช เชเชพเชขเซ เชจเชพเชเซเชฏเชพ เชตเชฟเชจเชพ เชกเซเชเชพ เชฒเซเช
เชเซ เชคเชฎเซ เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชจ เชนเซเชฏ เชคเซเชตเชพ เชเชพเชธเซเชเซเชกเชฟเชเช เชกเชฟเชฒเซเช เชชเชฐ เชเชงเชพเชฐ เชฐเชพเชเชคเชพ เชนเซเชต เชคเซ เชกเซเชเชพ เชเซเชตเซ เชฐเซเชคเซ เชฒเซเช เชฅเชพเชฏ เชเซ? เชเซ เชคเชฎเซ 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()) เชฆเชพเชเชฒ เชเชฐเซเช, เชคเซ เช เชเชฌเซเชเซเชเซเช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชเชตเชฐเชฐเชพเชเช เชฅเช เชเชถเซ. เชชเชฐเชเชคเซ เชคเชฎเชพเชฎ เชเชเชคเชฐเชฟเช เชตเชธเซเชคเซเช (เชเชฎเซเช, เชเชธเซเชเชฎเชพเชเชเซเชถเชจ เชเชจเซเชเชฟเชเซ เช
เชจเซ เชเชพเชฐเซเชเชเซเชฎเซเชฌเซ เชชเซเชฐเซเชกเชเซเชเซเชธ) เชฎเชพเชคเชพเชชเชฟเชคเชพ เชธเชพเชฅเซเชจเซเช เชเซเชกเชพเชฃ เชเซเชฎเชพเชตเชถเซ เช
เชจเซ เชกเซเชเชพเชฌเซเชเชฎเชพเช เชฐเชนเซเชถเซ.
เชคเซเชฎเชจเซ เชธเชพเชฅเซเชจเซเช เชเชจเซเชเซเชถเชจ เชคเซเชเซ เชเชฏเซเช เชนเซเชตเชพเชฅเซ, เช เชฎเซ เชคเซเชฎเชจเซ เชนเชตเซ เชตเชพเชเชเซเชถเซเช เชจเชนเซเช เช เชฅเชตเชพ เชเชพเชขเซ เชจเชพเชเซเชถเซเช เชจเชนเซเช (เชเซเชฏเชพเช เชธเซเชงเซ เช เชฎเซ เชคเซเชฎเชจเซ เชธเซเชชเชทเซเชเชชเชฃเซ เชเชเซเชธเซเชธ เชจเชนเซเช เชเชฐเซเช เช เชฅเชตเชพ เชธเชเชชเซเชฐเซเชฃ "เชเซเชฌเชฒ" เชธเชพเชซ เชจเชนเซเช เชเชฐเซเช). เช เชฎเซ เชเชจเซ "เชฎเซเชฎเชฐเซ เชฒเชฟเช" เชเชนเซเช เชเซเช.
เชเซเชฏเชพเชฐเซ เชเชชเชฃเซ เชเซเชทเซเชคเซเชฐ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซเช เชเซเช, เชคเซเชฏเชพเชฐเซ เชเชชเชฃเซ เชธเซเชชเชทเซเชเชชเชฃเซ เชคเชฎเชพเชฎ เชเชเชเซเชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเชตเซเช เชเซเชเช เช เชจเซ เชเชตเชพ เชเชชเชฐเซเชถเชจเซเชธ เชชเชนเซเชฒเชพเช เชฌเชงเซเช เชธเซเชชเชทเซเชเชชเชฃเซ เชเชพเชขเซ เชจเชพเชเชตเซเช เชเซเชเช. เช เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชจเซ เชเซเชฎ:
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()
}
}
}
เช เชฎเซ เช เชธเซเชฅเซ เชเชกเชชเชฅเซ เชตเชฟเชเชธเชคเชพ เชชเชฆเชพเชฐเซเชฅเซ เชธเชพเชฅเซ เชเชฐเซเชฏเซเช เช เชจเซ เชถเซเช เชฅเชฏเซเช เชคเซ เชคเชชเชพเชธเซเชฏเซเช.
เชชเชฐเชฟเชฃเชพเชฎเซ, เชคเซ เชชเชฆเชพเชฐเซเชฅเซ เชเซ เชเซเชจเซ เชเชชเชฃเซ เช เชธเซเชฒเซเชฏเซเชถเชจเชฅเซ เชเชตเชฐเซ เชฒเซเชงเซเช เชเซ เชคเซ เชตเชงเชคเซเช เชฌเชเชง เชฅเช เชเชฏเซเช. เช
เชจเซ เชเชงเชพเชฐเชจเซ เชเชเชเชฆเชฐ เชตเซเชฆเซเชงเชฟ เชงเซเชฎเซ เชชเชกเซ, เชชเชฐเชเชคเซ เช
เชเชเซ เชจเชนเซเช.
"เชธเชพเชฎเชพเชจเซเชฏ" เชเชเซเชฒ
เชเซ เชเซ เชเชงเชพเชฐ เชตเชงเซ เชงเซเชฎเซเชฅเซ เชตเชงเชตเชพ เชฒเชพเชเซเชฏเซ, เชคเซ เชนเชเซ เชชเชฃ เชตเชงเซเชฏเซ. เชคเซเชฅเซ เช เชฎเซ เชเชเชณ เชเซเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช. เช เชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชฐเชฟเชฏเชฒเชฎเชฎเชพเช เชกเซเชเชพ เชเซเชถเซเชเชเชจเซ เชเซเชฌ เช เชธเชเซเชฐเชฟเชฏ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เชคเซเชฅเซ, เชฆเชฐเซเช เชเชฌเซเชเซเชเซเช เชฎเชพเชเซ เชคเชฎเชพเชฎ เชจเซเชธเซเชเซเชก เชเชฌเซเชเซเชเซเชเซเชธ เชฒเชเชตเชพ เช เชถเซเชฐเชฎ-เชธเชเชจ เชเซ, เชเชชเชฐเชพเชเชค เชญเซเชฒเซเชจเซเช เชเซเชเชฎ เชตเชงเซ เชเซ, เชเชพเชฐเชฃ เชเซ เชเซเชก เชฌเชฆเชฒเชคเซ เชตเชเชคเซ เชคเชฎเซ เชเชฌเซเชเซเชเซเชเซเชธเชจเซ เชเชฒเซเชฒเซเช เชเชฐเชตเชพเชจเซเช เชญเซเชฒเซ เชถเชเซ เชเซ.
เชนเซเช เช เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเชเชคเซ เชนเชคเซ เชเซ เชฎเซเช เชเชจเซเชเชฐเชซเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซ เชฌเชงเซเช เชคเซเชจเซ เชเชพเชคเซ เชเชพเชฎ เชเชฐเซ เชเซ.
เชเซเชฏเชพเชฐเซ เชเชชเชฃเซ เชเชเชเช เชคเซเชจเชพ เชชเซเชคเชพเชจเชพ เชชเชฐ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเชเซเช เชเซเช, เชคเซเชฏเชพเชฐเซ เชเชชเชฃเซ เชชเซเชฐเชคเชฟเชฌเชฟเชเชฌเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชชเชกเชถเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเซ เชฆเชฐเซเช เชตเชฐเซเช เชซเซเชฒเซเชกเชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเช เชถเชเซเช เชเซเช เช เชจเซ เชคเชชเชพเชธเซ เชถเชเซเช เชเซเช เชเซ เชคเซ เชเช เชเซเชทเซเชคเซเชฐ เชชเชฆเชพเชฐเซเชฅ เชเซ เชเซ เชตเชธเซเชคเซเชเชจเซ เชธเซเชเชฟ:
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
เชจเชตเชพ เชฒเชเชคเชพ เชชเชนเซเชฒเชพ เชคเชฎเชพเชฎ เชเชเชคเซเชฐเชฟเชค เชตเชธเซเชคเซเชเชจเซ เชตเชพเชฐเชเชตเชพเชฐ เชเชพเชขเซ เชจเชพเชเซ เชเซ. เช
เชฎเซ เชธเชฎเชเซเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช เช
เชญเชฟเชเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช. เชเซเชทเซเชคเซเชฐเชฎเชพเช เชฎเซเชฎเชฐเซ เชฒเชฟเช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เช
เชฆเซเชถเซเชฏ เชฅเช เชเช เชเซ. เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเซเชฒเซเชก เชธเซเชเชพเชฐเซเชเซเชธเชจเซ เชธเชเชเซเชฏเชพ เชชเชฐ เชธเซเชเชพเชฐเซเชเช
เชช เชธเชฎเชฏเชจเซ เช
เชตเชฒเชเชฌเชจเชจเซเช เชธเชฎเชพเชจ เชฎเชพเชชเชจ เชเชฐเซเชฏเชพ เชชเชเซ, เช
เชฎเซ เชชเชฐเชฟเชฃเชพเชฎ เชเซเชเช เชเซเช.
เชเซเชฐเซเชจ เชฒเชพเชเชจ เชจเซเชธเซเชเซเชก เชเชฌเซเชเซเชเซเชเชจเชพ เชธเซเชตเชเชพเชฒเชฟเชค เชเชพเชธเซเชเซเชก เชเชพเชขเซ เชจเชพเชเชตเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเซเชฒเซเชก เชธเซเชเชพเชฐเซเชเซเชธเชจเซ เชธเชเชเซเชฏเชพ เชชเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจ เชธเซเชเชพเชฐเซเชเช
เชช เชธเชฎเชฏเชจเซ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชฆเชฐเซเชถเชพเชตเซ เชเซ.
เชชเชฐเชฟเชฃเชพเชฎเซ เช เชจเซ เชคเชพเชฐเชฃเซ
เชธเชคเชค เชตเชฟเชเชธเชคเชพ เชฐเชฟเชฏเชฒเชฎ เชกเซเชเชพเชฌเซเชเชจเซ เชเชพเชฐเชฃเซ เชเชชเซเชฒเซเชเซเชถเชจ เชเซเชฌ เช เชงเซเชฎเซ เชเชคเชฟเช เชถเชฐเซ เชฅเช เชฐเชนเซ เชนเชคเซ. เช เชฎเซ เชจเซเชธเซเชเซเชก เชเชฌเซเชเซเชเซเชเชจเชพ เช เชฎเชพเชฐเชพ เชชเซเชคเชพเชจเชพ "เชเชพเชธเซเชเซเชกเชฟเชเช เชกเชฟเชฒเซเช" เชธเชพเชฅเซ เช เชชเชกเซเช เชฐเชฟเชฒเซเช เชเชฐเซเชฏเซเช เชเซ. เช เชจเซ เชนเชตเซ เช เชฎเซ _app_start เชฎเซเชเซเชฐเชฟเช เชฆเซเชตเชพเชฐเชพ เช เชฎเชพเชฐเชพ เชจเชฟเชฐเซเชฃเชฏเชฅเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชธเซเชเชพเชฐเซเชเช เชช เชธเชฎเชฏเชจเซ เชเซเชตเซ เชฐเซเชคเซ เช เชธเชฐ เชฅเช เชคเซเชจเซเช เช เชฎเซ เชจเชฟเชฐเซเชเซเชทเชฃ เช เชจเซ เชฎเซเชฒเซเชฏเชพเชเชเชจ เชเชฐเซเช เชเซเช.
เชตเชฟเชถเซเชฒเซเชทเชฃ เชฎเชพเชเซ, เช
เชฎเซ 90 เชฆเชฟเชตเชธเชจเซ เชธเชฎเชฏเชเชพเชณเซ เชฒเชเช เชเซเช เช
เชจเซ เชเซเช: เชเชชเซเชฒเชฟเชเซเชถเชจ เชฒเซเชเช เชฅเชตเชพเชจเซ เชธเชฎเชฏ, เชธเชฐเซเชฐเชพเชถ เช
เชจเซ เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเซ 95เชฎเซ เชชเชฐเซเชธเซเชจเซเชเชพเชเชฒ เชชเชฐ เชเชตเซ เชเซ, เชคเซ เชเชเชตเชพ เชฒเชพเชเซเชฏเซเช เช
เชจเซ เชนเชตเซ เชตเชงเชคเซเช เชจเชฅเซ.
เชเซ เชคเชฎเซ เชธเชพเชค-เชฆเชฟเชตเชธเชจเชพ เชเชพเชฐเซเช เชชเชฐ เชจเชเชฐ เชจเชพเชเซ, เชคเซ _app_start เชฎเซเชเซเชฐเชฟเช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชชเชฐเซเชฏเชพเชชเซเชค เชฒเชพเชเซ เชเซ เช
เชจเซ เชคเซ 1 เชธเซเชเชจเซเชกเชฅเซ เชเชเซ เชเซ.
เชคเซ เชเชฎเซเชฐเชตเซเช เชชเชฃ เชฏเซเชเซเชฏ เชเซ เชเซ เชกเชฟเชซเซเชฒเซเช เชฐเซเชชเซ, เชเซ _app_start เชจเซเช เชธเชฐเซเชฐเชพเชถ เชฎเซเชฒเซเชฏ 5 เชธเซเชเชจเซเชก เชเชฐเชคเชพเช เชตเชงเซ เชเชพเชฏ เชคเซ Firebase เชธเซเชเชจเชพเช เชฎเซเชเชฒเซ เชเซ. เชเซ เชเซ, เชเซเชฎ เชเชชเชฃเซ เชเซเช เชถเชเซเช เชเซเช, เชคเชฎเชพเชฐเซ เชเชจเชพ เชชเชฐ เชเชงเชพเชฐ เชฐเชพเชเชตเซ เชเซเชเช เชจเชนเซเช, เชชเชฐเชเชคเซ เช เชเชฆเชฐ เชเชพเช เช เชจเซ เชคเซเชจเซ เชธเซเชชเชทเซเชเชชเชฃเซ เชคเชชเชพเชธเซ.
เชฐเชฟเชฏเชฒเชฎ เชกเซเชเชพเชฌเซเชเชจเซ เชเชพเชธ เชตเชพเชค เช เชเซ เชเซ เชคเซ เชจเซเชจ-เชฐเชฟเชฒเซเชถเชจเชฒ เชกเซเชเชพเชฌเซเช เชเซ. เชเชชเชฏเซเชเชฎเชพเช เชธเชฐเชณเชคเชพ, ORM เชธเซเชฒเซเชฏเซเชถเชจเซเชธ เช เชจเซ เชเชฌเซเชเซเชเซเช เชฒเชฟเชเชเชฟเชเชเชจเซ เชธเชฎเชพเชจเชคเชพ เชนเซเชตเชพ เชเชคเชพเช, เชคเซเชฎเชพเช เชเชพเชธเซเชเซเชก เชเชพเชขเซ เชจเชพเชเชตเชพเชฎเชพเช เชเชตเชคเซเช เชจเชฅเซ.
เชเซ เชเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเชพเชฎเชพเช เชจเชนเซเช เชเชตเซ, เชคเซ เชจเซเชธเซเชเซเชก เชเชฌเซเชเซเชเซเชเซเชธ เชเชเช เชพ เชฅเชถเซ เช เชจเซ "เชฒเซเช เชฅเช เชเชถเซ." เชกเซเชเชพเชฌเซเช เชธเชคเชค เชตเชงเชถเซ, เชเซ เชฌเชฆเชฒเชพเชฎเชพเช เชเชชเซเชฒเชฟเชเซเชถเชจเชจเชพ เชฎเชเชฆเซ เช เชฅเชตเชพ เชธเซเชเชพเชฐเซเชเช เชชเชจเซ เช เชธเชฐ เชเชฐเชถเซ.
เชฎเซเช เชฐเชฟเชฏเชฒเชฎเชฎเชพเช เชเชฌเซเชเซเชเซเชเซเชธเชจเซ เชเชกเชชเชฅเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชธเซเชเซเชก เชกเชฟเชฒเซเช เชเชฐเชตเซเช เชคเซ เช
เชเชเซเชจเซ เช
เชฎเชพเชฐเซ เช
เชจเซเชญเชต เชถเซเชฐ เชเชฐเซเชฏเซ, เชเซ เชนเชเซ เชธเซเชงเซ เชฌเซเชเซเชธเชจเซ เชฌเชนเชพเชฐ เชจเชฅเซ, เชชเชฐเชเชคเซ เชฒเชพเชเชฌเชพ เชธเชฎเชฏเชฅเซ เชคเซเชจเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชฐเชนเซ เชเซ.
เช เชธเซเชตเชฟเชงเชพเชจเชพ เชจเชฟเชเชเชตเชฐเซเชคเซ เชฆเซเชเชพเชต เชตเชฟเชถเซ เชเชฐเซเชเชพ เชนเซเชตเชพ เชเชคเชพเช, เชเซเชทเซเชคเซเชฐเชฎเชพเช เชเชพเชธเซเชเซเชก เชเชพเชขเซ เชจเชพเชเชตเชพเชจเซ เชเซเชฐเชนเชพเชเชฐเซ เชกเชฟเชเชพเชเชจ เชฆเซเชตเชพเชฐเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเซ เชคเชฎเซ เชจเชตเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชกเชฟเชเชพเชเชจ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ, เชคเซ เชเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ. เช
เชจเซ เชเซ เชคเชฎเซ เชชเชนเซเชฒเซเชฅเซ เช Realm เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ, เชคเซ เชคเชชเชพเชธเซ เชเซ เชคเชฎเชจเซ เชเชตเซ เชธเชฎเชธเซเชฏเชพเช เชเซ เชเซ เชจเชนเซเช.
เชธเซเชฐเซเชธ: www.habr.com