Skip to content

๐Ÿ“ฆ ์™œ DataStore ์ธ๊ฐ€?

saeyoung Oh edited this page Dec 13, 2023 · 1 revision

SharedPreferences


  • ๋น„๋™๊ธฐ API ์ง€์› ๋ถ€์กฑ
    • ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ listener ๋ฅผ ํ†ตํ•ด์„œ ์ฝœ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๋ง๊ณ ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Œ.
  • ํ˜ธ์ถœ๋œ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐ”๋กœ write ์ด ๊ฐ€๋Šฅํ•จ.
    • UI ์Šค๋ ˆ๋“œ์—์„œ๋„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— UI ์Šค๋ ˆ๋“œ ๋ธ”๋กœํ‚น์œผ๋กœ ์ธํ•œ ANR ๋ฐœ์ƒ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•จ.
  • Runtime exception ์— ์ทจ์•ฝ
    • exception ํ•ธ๋“ค๋ง์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•„, runtime์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์–ดํ”Œ์ด ์ข…๋ฃŒ๋˜๋Š” ๋ฌธ์ œ.

DataStore


  • ์ฝ”๋ฃจํ‹ด๊ณผ Flow ๋ฅผ ํ†ตํ•œ ๋น„๋™๊ธฐ API ๋ฅผ ์ง€์›ํ•˜๊ณ , ์ผ๊ด€๋œ ํŠธ๋žœ์žญ์…˜ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  • Dispatcher.IO ์—์„œ์˜ ์ž‘์—…์ด ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— UI ์Šค๋ ˆ๋“œ์—์„œ ํ˜ธ์ถœ๋˜์–ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์œ ํ˜•
    • Preferences DataStore
      • key-value ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๋ฉฐ, ์‚ฌ์ „ ์ •์˜๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ.
      • ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ.
    • Proto DataStore
      • ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํ˜•์ด ์ง€์ •๋œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ์‚ฌ์ „ ์ •์˜๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ํ•„์š”ํ•จ.
      • ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์ œ๊ณตํ•˜๋ฉฐ, Preferences DataStore ๋ณด๋‹ค ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ์— ์ ํ•ฉ.

Room


  • ๊ธฐ์กด ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋˜ SQLite ๋ฅผ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ถ•๋œ ORM (Object Relational Mapping) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Entity (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”), DAO (ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•œ ํด๋ž˜์Šค๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•จ), Database (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ์—‘์„ธ์Šค ํฌ์ธํŠธ ์—ญํ• ์„ ํ•จ) ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ.
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๊ณ„์™€ ์ฟผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ.



-> Preferences DataStore ๋ฅผ ์„ ํƒํ•œ ์ด์œ 

- ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ SharedPreferences ์€ ๊ฐ–์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ํƒํ•˜์ง€ ์•Š์Œ.
- ์ €์žฅํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๋Š” ์œ ์ €์˜ accessToken / refreshToken ์ด ์ „๋ถ€.  ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ๊ณ , 
๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฟผ๋ฆฌ ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Œ.
- ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Preferences DataStore ๊ธฐ์ˆ ์„ ์ฑ„ํƒํ•˜์—ฌ accessToken / refreshToken ์„ ๊ด€๋ฆฌํ•จ.
Clone this wiki locally