๐Ÿ”ฅTIL๐Ÿ”ฅ๊ธฐ์ˆ ๋ฉด์ ‘์งˆ๋ฌธ | Serializable๊ณผ Parcelable

hyihyiยท2024๋…„ 5์›” 13์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
69/70
post-thumbnail

๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ์‹

ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ์‹œํ‚ฌ ๋•Œ Bundle์— ๊ฐ์ฒด๋ฅผ ๋‹ด์•„ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
๋งŒ์•ฝ ์ „๋‹ฌํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์žกํ•œ ํด๋ž˜์Šค์ผ ๊ฒฝ์šฐ Serializable ๋˜๋Š” Parcelable๋กœ ์ง๋ ฌํ™”ํ•œ ๋’ค ์ธํ…ํŠธ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ“– ์ง๋ ฌํ™”๋ž€?

์ง๋ ฌํ™” : ๊ฐ์ฒด๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ(์ŠคํŠธ๋ฆผ)๋กœ ๋ณ€ํ˜•ํ•˜์—ฌ ์ „์†ก ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ

  • ์ง๋ ฌํ™”์˜ ํ•ต์‹ฌ ํฌ์ธํŠธ
  1. ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹ํ™” : ๊ฐ์ฒด์˜ ๋ณต์žกํ•œ ์ƒํƒœ๋ฅผ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ, ์ฃผ๋กœ ํ…์ŠคํŠธ๋‚˜ ๋ฐ”์ดํŠธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜
  2. ์ „์†ก ๋ฐ ์ €์žฅ ์šฉ์ด์„ฑ : ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋„คํŠธ์›Œํฌ ๋“ฑ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ : ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ํ˜ธํ™˜๋  ์ˆ˜ ์žˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ์‹œ์Šคํ…œ์—์„œ ์ง๋ ฌํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์—ญ์ง๋ ฌํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค” ์ง๋ ฌํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ 


๐Ÿ‘† ์˜ˆ์‹œ

์ง๋ ฌํ™” ์˜ˆ์‹œ : ๊ฒŒ์ž„ ์ €์žฅ

๋‚˜๋Š” ๋ณต์žกํ•œ RPG ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜๊ณ  ์žˆ๋‹ค. ๊ฒŒ์ž„์—๋Š” ์บ๋ฆญํ„ฐ ์ด๋ฆ„, ๋ ˆ๋ฒจ, ๊ฒฝํ—˜์น˜, ๋ณด์œ ํ•œ ์•„์ดํ…œ, ํ˜„์žฌ ์œ„์น˜ ๋“ฑ๋“ฑ ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.
์ด ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฒŒ์ž„์„ ์ข…๋ฃŒํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

1๋‹จ๊ณ„ : ์ง๋ ฌํ™” ๊ณผ์ •

  • ์ง๋ ฌํ™”๋Š” ๋‚ด ์บ๋ฆญํ„ฐ์™€ ๊ฒŒ์ž„ ์ƒํƒœ(๊ฐ์ฒด)๋ฅผ ํŒŒ์ผ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
  • ๊ฒŒ์ž„์„ ์ €์žฅํ•  ๋•Œ, ์บ๋ฆญํ„ฐ์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ด์„œ ํ•˜๋‚˜์˜ '์ŠคํŠธ๋ฆผ' ๋˜๋Š” ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋กœ ๋งŒ๋“ ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฒผ์„ ์ˆ˜ ์žˆ๋‹ค.
์บ๋ฆญํ„ฐ๋ช…:JohnDoe,๋ ˆ๋ฒจ:35,๊ฒฝํ—˜์น˜:12000,๋ณด์œ ์•„์ดํ…œ:[๊ฒ€,๋ฐฉํŒจ,ํฌ์…˜],ํ˜„์žฌ์œ„์น˜:X:100,Y:200
  • ์ด ์ •๋ณด ์ŠคํŠธ๋ฆผ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„๋œ๋‹ค.

2๋‹จ๊ณ„ : ์ €์žฅ

  • ์ด ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ํŒŒ์ผ ํ˜น์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•œ๋‹ค. ์ด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋‚˜์ค‘์— ๊ฒŒ์ž„์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

3๋‹จ๊ณ„ : ์—ญ์ง๋ ฌํ™”

  • ๊ฒŒ์ž„์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ, ์ €์žฅ๋œ ์ŠคํŠธ๋ฆผ์„ ์ฝ์–ด์„œ ์บ๋ฆญํ„ฐ์™€ ๊ฒŒ์ž„ ์ƒํƒœ๋ฅผ ์›๋ž˜๋Œ€๋กœ ๋ณต๊ตฌํ•œ๋‹ค. ์ด ๊ณผ์ •์„ ์—ญ์ง๋ ฌํ™”๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ฝ๊ณ , ์บ๋ฆญํ„ฐ์˜ ์ •๋ณด๋ฅผ ๋‹ค์‹œ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฒŒ์ž„์ด ์ด์ „ ์ƒํƒœ์—์„œ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ด ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ง๋ ฌํ™”๊ฐ€ ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ , ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ •์ž„์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง๋ ฌํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ์ˆ ์ด๋‹ค.


๐Ÿ“ ์ง๋ ฌํ™” ๋ฐฉ์‹

1. Serializable

โž• ์žฅ์ 

  • ๊ฐ„ํŽธํ•œ ์‚ฌ์šฉ : 'Serializable' ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๊ฐ์ฒด๊ฐ€ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•ด์ง. ๋ณ„๋„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ์ž๋™์ฒ˜๋ฆฌ : ์ž๋ฐ”์˜ Reflection์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™”๋ฅผ ์ˆ˜ํ–‰.
    ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง๋ ฌํ™” ๊ณผ์ •์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์–ด ์ฝ”๋“œ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ด

โž– ๋‹จ์ 

  • ์„ฑ๋Šฅ ๋ฌธ์ œ : Reflection์„ ์‚ฌ์šฉํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๊ณ  ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํฐ ๊ฐ์ฒด๋‚˜ ๋ณต์žกํ•œ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

2. Parcelable

โž• ์žฅ์ 

  • ๋†’์€ ์„ฑ๋Šฅ : ์ˆ˜๋™์œผ๋กœ ์ง๋ ฌํ™” ๊ณผ์ •์„ ์ œ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๋‹ค. ํŠนํžˆ, ์•ˆ๋“œ๋กœ์ด๋“œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ํšจ๊ณผ์ ์ด๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ : ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๊ณ , ์‹คํ–‰ ์‹œ๊ฐ„๋„ ๋น ๋ฅด๋‹ค.
  • ์ปค์Šคํ…€ ๊ตฌํ˜„ ๊ฐ€๋Šฅ : ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™”์˜ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด, ๊ฐ์ฒด์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ง๋ ฌํ™”ํ•˜๋Š” ๋“ฑ์˜ ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

โž– ๋‹จ์ 

  • ๊ตฌํ˜„ ๋ณต์žก์„ฑ : 'Parcelable' ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 'writeToParcel๊ณผ createFromParcel ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
  • ์•ˆ๋“œ๋กœ์ด๋“œ ํ•œ์ • : 'Parcelable'์€ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์— ํŠนํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ์ž๋ฐ” ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

Serializable๋Š” ๊ฐ„ํŽธ์„ฑ์ด ์žฅ์ ์ด์ง€๋งŒ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ๋Š” Parcelable์ด ์•ˆ๋“œ๋กœ์ด๋“œ ํ™˜๊ฒฝ์—์„œ ๋”์šฑ ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค.

profile
๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์“ฐ๋Š” ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€