๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์
ํ๋์ ์กํฐ๋นํฐ์์ ๋ค๋ฅธ ์กํฐ๋นํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ์ํฌ ๋ Bundle์ ๊ฐ์ฒด๋ฅผ ๋ด์ ์ ๋ฌํด์ผ ํ๋ค.
๋ง์ฝ ์ ๋ฌํด์ผ ํ ๋ฐ์ดํฐ๊ฐ ๋ณต์กํ ํด๋์ค์ผ ๊ฒฝ์ฐ Serializable ๋๋ Parcelable๋ก ์ง๋ ฌํํ ๋ค ์ธํ
ํธ์ ์ถ๊ฐํด์ผ ํ๋ค.
๐ ์ง๋ ฌํ๋?
์ง๋ ฌํ : ๊ฐ์ฒด๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ๋ฐ์ดํฐ(์คํธ๋ฆผ)๋ก ๋ณํํ์ฌ ์ ์ก ๊ฐ๋ฅํ ํํ๋ก ๋ง๋๋ ๊ฒ
- ์ง๋ ฌํ์ ํต์ฌ ํฌ์ธํธ
- ๋ฐ์ดํฐ์ ํ์ํ : ๊ฐ์ฒด์ ๋ณต์กํ ์ํ๋ฅผ ๋จ์ํ ํํ, ์ฃผ๋ก ํ
์คํธ๋ ๋ฐ์ดํธ ํํ๋ก ๋ณํ
- ์ ์ก ๋ฐ ์ ์ฅ ์ฉ์ด์ฑ : ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ ํ์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋คํธ์ํฌ ๋ฑ์ ํตํด ์ฝ๊ฒ ์ ์ฅํ๊ณ ์ ์กํ ์ ์๋ค.
- ํ๋ซํผ ๋
๋ฆฝ์ฑ : ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ ๋ค์ํ ํ๋ซํผ ๋ฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ํธํ๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ํ ์์คํ
์์ ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์์คํ
์์ ์ญ์ง๋ ฌํํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
๐ค ์ง๋ ฌํ๋ฅผ ํด์ผ ํ๋ ์ด์
๐ ์์
์ง๋ ฌํ ์์ : ๊ฒ์ ์ ์ฅ
๋๋ ๋ณต์กํ RPG ๊ฒ์์ ํ๋ ์ดํ๊ณ ์๋ค. ๊ฒ์์๋ ์บ๋ฆญํฐ ์ด๋ฆ, ๋ ๋ฒจ, ๊ฒฝํ์น, ๋ณด์ ํ ์์ดํ
, ํ์ฌ ์์น ๋ฑ๋ฑ ๋ง์ ์ ๋ณด๊ฐ ์๋ค.
์ด ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฒ์์ ์ข
๋ฃํ๋ค๊ฐ ๋ค์ ์์ํ ๋๊น์ง ์ ์งํ๊ธฐ ์ํด์๋ ์ด๋๊ฐ์ ์ ์ฅํด์ผ ํ๋ค.
1๋จ๊ณ : ์ง๋ ฌํ ๊ณผ์
- ์ง๋ ฌํ๋ ๋ด ์บ๋ฆญํฐ์ ๊ฒ์ ์ํ(๊ฐ์ฒด)๋ฅผ ํ์ผ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์๋ ํํ๋ก ๋ณํํ๋ ๊ณผ์ ์ด๋ค.
- ๊ฒ์์ ์ ์ฅํ ๋, ์บ๋ฆญํฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ถ์ถํด์ ํ๋์ '์คํธ๋ฆผ' ๋๋ ์ฐ์๋ ๋ฐ์ดํฐ ํํ๋ก ๋ง๋ ๋ค. ์๋ฅผ ๋ค์ด, ์ด ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ด ์๊ฒผ์ ์ ์๋ค.
์บ๋ฆญํฐ๋ช
:JohnDoe,๋ ๋ฒจ:35,๊ฒฝํ์น:12000,๋ณด์ ์์ดํ
:[๊ฒ,๋ฐฉํจ,ํฌ์
],ํ์ฌ์์น:X:100,Y:200
- ์ด ์ ๋ณด ์คํธ๋ฆผ์ ํ์ผ ์์คํ
์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ์ ์๋๋ก ์ค๋น๋๋ค.
2๋จ๊ณ : ์ ์ฅ
- ์ด ์ฐ์๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ํ์ผ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ค. ์ด ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋์ค์ ๊ฒ์์ ๋ค์ ๋ถ๋ฌ์ฌ ๋ ์ฌ์ฉ๋๋ค.
3๋จ๊ณ : ์ญ์ง๋ ฌํ
- ๊ฒ์์ ๋ค์ ์์ํ ๋, ์ ์ฅ๋ ์คํธ๋ฆผ์ ์ฝ์ด์ ์บ๋ฆญํฐ์ ๊ฒ์ ์ํ๋ฅผ ์๋๋๋ก ๋ณต๊ตฌํ๋ค. ์ด ๊ณผ์ ์ ์ญ์ง๋ ฌํ๋ผ๊ณ ํ๋ค.
- ์ ์ฅ๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ฝ๊ณ , ์บ๋ฆญํฐ์ ์ ๋ณด๋ฅผ ๋ค์ ๊ฐ์ฒด ํํ๋ก ๋ณํํ์ฌ ๊ฒ์์ด ์ด์ ์ํ์์ ์ด์ด์ง ์ ์๋๋ก ํ๋ค.
์ด ์์๋ฅผ ํตํด ์ง๋ ฌํ๊ฐ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ฐ์๋ ๋ฐ์ดํฐ ํํ๋ก ๋ณํํ์ฌ ์ ์ฅํ๊ณ , ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ฒด๋ก ๋ณต๊ตฌํ๋ ๊ณผ์ ์์ ์ดํดํ ์ ์๋ค. ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ ์ฅํ๊ณ ์ ์กํ ์ ์๋๋ก ํด์ฃผ๋ ๋งค์ฐ ์ ์ฉํ ๊ธฐ์ ์ด๋ค.
๐ ์ง๋ ฌํ ๋ฐฉ์
1. Serializable
โ ์ฅ์
- ๊ฐํธํ ์ฌ์ฉ : 'Serializable' ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฒ๋ง์ผ๋ก ๊ฐ์ฒด๊ฐ ์ง๋ ฌํ ๊ฐ๋ฅํด์ง. ๋ณ๋์ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค.
- ์๋์ฒ๋ฆฌ : ์๋ฐ์ Reflection์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ๋ฅผ ์ํ.
๊ฐ๋ฐ์๊ฐ ์ง๋ ฌํ ๊ณผ์ ์ ๋ํด ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ด ์ฝ๋ ๊ด๋ฆฌ๊ฐ ์ฉ์ด
โ ๋จ์
- ์ฑ๋ฅ ๋ฌธ์ : Reflection์ ์ฌ์ฉํด ์๋์ ์ผ๋ก ๋๋ฆฌ๊ณ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. ํฐ ๊ฐ์ฒด๋ ๋ณต์กํ ๊ฐ์ฒด ๊ทธ๋ํ์์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค.
2. Parcelable
โ ์ฅ์
- ๋์ ์ฑ๋ฅ : ์๋์ผ๋ก ์ง๋ ฌํ ๊ณผ์ ์ ์ ์ดํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๋ค. ํนํ, ์๋๋ก์ด๋ ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ํจ๊ณผ์ ์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ : ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ๊ณ , ์คํ ์๊ฐ๋ ๋น ๋ฅด๋ค.
- ์ปค์คํ
๊ตฌํ ๊ฐ๋ฅ : ๊ฐ๋ฐ์๊ฐ ์ง์ ์ง๋ ฌํ์ ์ญ์ง๋ ฌํ์ ๋ฐฉ๋ฒ์ ์ ์ํ ์ ์์ด, ๊ฐ์ฒด์ ํน์ ๋ถ๋ถ๋ง ์ ํ์ ์ผ๋ก ์ง๋ ฌํํ๋ ๋ฑ์ ์ธ๋ฐํ ์ ์ด๊ฐ ๊ฐ๋ฅํ๋ค.
โ ๋จ์
- ๊ตฌํ ๋ณต์ก์ฑ : 'Parcelable' ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ 'writeToParcel๊ณผ createFromParcel ๋ฑ์ ๋ฉ์๋๋ฅผ ๋ช
์์ ์ผ๋ก ๊ตฌํํด์ผ ํ๋ค.
- ์๋๋ก์ด๋ ํ์ : 'Parcelable'์ ์๋๋ก์ด๋ ํ๋ซํผ์ ํนํ๋์ด ์์ผ๋ฉฐ ๋ค๋ฅธ ์๋ฐ ํ๊ฒฝ์์๋ ์ฌ์ฉํ ์ ์๋ค.
Serializable
๋ ๊ฐํธ์ฑ์ด ์ฅ์ ์ด์ง๋ง ์ฑ๋ฅ ์ธก๋ฉด์์๋ Parcelable
์ด ์๋๋ก์ด๋ ํ๊ฒฝ์์ ๋์ฑ ์ต์ ํ๋์ด ์๋ค.