๐ฑ Today I Learned (์ง์ค ์๊ฐ: 12์๊ฐ 55๋ถ)
- (10:00 ~ 11:00 / 1์๊ฐ) ํํ๋ก์ ํธ ํ์
- (11:00 ~ 12:50 / 1์๊ฐ 50๋ถ) ์คํ ๋ค๋๋ฐ 3์ฃผ์ฐจ ๊ฐ์ : Fragment, Recycler View, ๋ผ์ด๋ธ ์ฝ๋ฉ
- (14:00 ~ 18:20 / 4์๊ฐ 20๋ถ) ํํ๋ก์ ํธ ํ์ ๋ฐ Git Issue ์ฐจ๋ก๋ก ๊ตฌํ
- (19:30 ~ 22:00 / 2์๊ฐ 30๋ถ) ํํ๋ก์ ํธ ํ์ ๋ฐ develop์ ์ ๋ถ ํฉ์นจ, ๊ฐ์ ํธ๋ฌ๋ธ์ํ PPT์์ฑ
- (12:30 ~ 01:30 / 1์๊ฐ) TIL ์์ฑ ๋ฐ ์ ๋ฆฌ
- (01:30 ~ 01:40 / 10๋ถ) ์์ฑํ ํธ๋ฌ๋ธ์ํ ppt์ ๋ฌธ์ ์ํฉ gif ์ฒจ๋ถ
- (01:40 ~ 02:15 / 35๋ถ) ๋ง์ง๋ง ์ ํ๋ถ๋ถ ๊ตฌํ ์๋ฃ ๋ฐ ๋ง์ง๋ง PR ์์ฒญ์๋ฃ
- (02:15 ~ 03:45 / 1์๊ฐ 30๋ถ) OOO ์ ์ถ
*** ์ ์ฌ 13:00 ~ 14:00 / ์ ๋ 18:00 ~ 19:00 ์ ์ธ
โ
1. ์คํ ๋ค๋๋ฐ 3์ฃผ์ฐจ ๊ฐ์ (Fragment, Recycler View, ๋ผ์ด๋ธ ์ฝ๋ฉ)
- ๋จ์ ์ฝ๋๋ฅผ ๊นํ๋ธ์์ ์์ฃผ ์ฝ์ด๋ณด๊ณ ๋ถ์ํ๋๊ฒ ์ฑ์ฅ์ ๋ง์ ๋์์ด ๋จ
- jetpack bottom navigation, viewpager2๋ fragment๊ฐ ์ ์ฐ๊ฒฐ๋์ด ์์
๐ก Fragment ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์ (Bundle, Fragment Result API ๋ฑ...)
- 1) ๋ฒ๋ค ์ฌ์ฉ ๊ฒฝ์ฐ
- Bundle๋ก ์ค๋ธ์ ํธ ๋จ์๋ก ํค๊ณผ ๊ฐ์ ๋๊ฒจ์ค ์ ์์
- ๋ฒ๋ค์์๋ ์ง๋ ฌํ๋ณด๋ค ์ฑ๋ฅ์ด ์ด ๋ฐฐ ์ข์ parcelable ์ฌ์ฉ - 2) Fragment Result Api ์ฌ์ฉ
- setFragmentResult ๋ฑ - ์ด์ธ์ ๋ฐฉ๋ฒ์ ๋์ค์ ์ค๋ช ํด์ฃผ์ ๋ค๊ณ ํ์ จ๋ค.
- ์ด์ ์ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌํด๋์๋ ๋ด์ฉ์ด๊ธด ํ๋ค.
๐ก Recycler View
- ํ๋ฉด์ ๋ณด์ฌ์ง๋ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
- ๊ตฌํ ๋ฐฉ๋ฒ
1) LinearLayoutManager ์ง์ (์ด 2๊ฐ ์ด์์ GirdLayoutManager,๋ถ๊ท์นํ ๋ชจ์์ StaggeredGridLayoutManager)
2) ๋ทฐ ํ๋ ํด๋์ค ํ์ฅ
3) ๋ทฐํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ์ด๋ํฐ - ViewHolderClassํ์ฅ : ๋ฐ๋์ ์ค๋ฒ๋ผ์ด๋ฉ
-onCreateViewHolder()
-onBindViewHolder()
-getItemCount - viewBinding(module-level build.gradle) ์ฌ์ฉ
kotlin extension
๋ผ์ด๋ธ์ฝ๋ฉ
- ๋ผ์ด๋ธ ์ฝ๋ฉ์ ๋ค์ ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค!
2. ํํ๋ก์ ํธ ๊ตฌํ
- ์ด์ ์ ๋ง ๋ช ์ ๋๋ ๋จ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , PR๋ก ๋ชจ๋ ์ฐ๊ฒฐ ์ง๊ณ ์ ๋ฆฌํ๋ ์๊ฐ๋ง ๋จ์๋ค.
- ์ง๊ธ๊น์ง์ ํ๊ณ ์ ํธ๋ฌ๋ธ ์ํ ์ PPT ํ์์ผ๋ก ์์ฑํ๋ ์๊ฐ๋ ๊ฐ์ก๋ค.
- ์ค๋ ๋ง์ด ํ์ด์ง ๋ฐ ํ๋ก์ ํธ์ ๊ด๋ จํด์ ๊ตฌํํ ๊ฒ๊ณผ ํธ๋ฌ๋ธ ์ด์๋ ์๋์ ๊ฐ๋ค.
๐ป ๊ตฌํ1. strings.xml (kor) ์ค์
- new - value resource file - file name์ strings.xml ์ค์ - Locale ํด๋ฆญ ํ >> ํด๋ฆญ - Language ์ค์
- string์์ <string name="์ค์ ํ ์คํธ๋ง ์ด๋ฆ">์์ ๋กญ๊ฒ ์ ๋ ฅํ ์คํธ๋ง ๊ฐ</string> ํํ๋ก ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
- ์คํธ๋ง ๋ค์ ์ปจ๋ฒค์
(ํ์
_์กํฐ๋นํฐ๋ช
_์ง์ ํ ์ด๋ฆ)
<string name="tv_signup_welcome">Sign up to see photos and videos</string>
- ํด๋น ๋ด์ฉ์ ์ ๋ ฅํ๊ณ Translations Editor๋ฅผ ์ผ๋ฉด ์๋ง์ ๋ฒ์ญ ๊ฐ์ ํธํ๊ฒ ์ค์ ํ ์ ์๋ค.
๐ป ๊ตฌํ2. ์ด๋ฏธ์ง ํด๋ํฐ์์ ์ ํ ํ ๋๊ธฐ๋ ๋ก์ง ๊ตฌํ
// 1. Myactivity ํด๋์ค์ profileUri ์์๋ก null ์ค์ ํด์ ์ ์ญ๋ณ์ ์ค์ ํด๋๊ธฐ
private var profileUri: Uri? = null
// 2. uri?.let ์์ profileUri = it์ผ๋ก ์ค์
fun changeProfilePhoto(view: View) {
pickMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
}
private val pickMedia =
registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
uri?.let {
binding.imgProfile.setImageURI(it)
profileUri = it
}
}
// 3. done ํด๋ฆญํ์ ๋ ๊ตฌ๋๋๋ editUserInfo(), image = Image.ImageUri(profileUri!!)
private fun editUserInfo(
newName: String,
newBio: String,
newEmail: String,
newPhoneNumber: String,
) {
this.grantUriPermission(
this.packageName, profileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION
)
with(user) {
name = newName
bio = newBio
email = newEmail
phoneNumber = newPhoneNumber
if(profileUri != null){
image = Image.ImageUri(profileUri!!)
}
MemoryStorage.setUser(user)
}
}
- Photo Picker๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๊ณ ์์ ํ๋ค. (๋จ์ผํด๋์ค์ด๋ฏ๋ก Pick Visual Media๋ฅผ ์ฌ์ฉํด ๊ตฌํ)
- ํด๋น ๋ถ๋ถ์ ์์ด ๋ฐ์ดํฐ ํด๋์ค๋ ์์ ํ๊ณ ์ ๋ง ์ด์ฐ์ ์ฐ ํ์๋ถ๋ค๊ณผ ํํฐ๋๊ณผ ์ ํด๊ฒฐ์ ํ๋ค.
- ์ฐธ๊ณ ๋ก User์ Image ์์ฑ์ด val๋ก ๋์ด์์ด์ ์ค๋ฅ๊ฐ ์์ด var๋ก ์์ ํ์๊ณ , ํ์๋ถ์ ์ฝ๋๋ ์๋ง๊ฒ ์์ ๋์๋ค.
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ: https://mundroid.tistory.com/2
๐ป ๊ตฌํ3. ์ฒ์์ ๊ธฐ์กด user์ ์ ์ฅ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ์ถ๋ ฅ
private fun initUserProfileImage() {
val image = user.image
binding.run {
when(image) {
is Image.ImageDrawable -> civProfileImage.setImageResource(image.drawable)
is Image.ImageUri -> civProfileImage.setImageURI(image.uri)
}
}
}
- ์ด๋ฏธ์ง๊ฐ ๋ฐ๋ ๋ค ๋ฐ์๋๋ ๊ฑด ๊ตฌํํด๋จ๋๋ฐ, ์ฒ์์ ๋ค์ด์์ ๋ user์ ์ ์ฅ๋ ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ์ง ๋ชปํ์๋ค.
- ๋ฐ๋ผ์ ์ฌ์ฉ์ ํ๋กํ ์ด๋ฏธ์ง๋ฅผ ์ด๊ธฐํํ๋ initUserProfileImage()๋ฅผ ๊ฐ์ ธ์๋ค.
- image๊ฐ Image.Imagedrawable ํ์
์ผ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ๋ง๊ฒ ์ค์ ํ๊ณ , Uri์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
๋ค๋ง ์ด ๋ก์ง์ ๋์ค์ ๋ ์๊ฐํด๋ด์ผ ๊ฒ ๋ค. is์ ๊ฒฝ์ฐ ์ค๋งํธ ์บ์คํ : ํ์ ๊ฒ์ฌ ์ญํ ์ ํ๋ค๊ณ ํ๋๋ฐ ๊ถ๊ธํ๋ค. - run๊ณผ when์ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ฝ๋๊ฐ ๋ง์ด ๊ฐ๊ฒฐํด์ก๋ค.
๐ป ๊ตฌํ4. Edittext์์ ์ํฐ๋ฅผ ์น๋ฉด ์๋ Edittext๋ก ์ฎ๊ฒจ๊ฐ๊ธฐ
android:singleLine="true"
- XML์์ ์ด ํ ์ค๋ง ์ถ๊ฐํด๋ ์ํฐ ๋๋ฅด๋ฉด ๋ค์์ผ๋ก ๋ค์ด๊ฐ๋ค. ์ฑ๊ธ๋ผ์ธ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ด๋ค.
- ์คํ ํฌ์ปค์ฑ์ ๊ดํ ๋ด์ฉ์ ์ด์ ์์ฑํ์๋๋ฐ, ๊ทธ๊ฒ๋ณด๋ค ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ค.
- ํฌ์ปค์ค์์ ์ฐจ์ด์ ์, ํฌ์ปค์ค๋ก ํ๋ฉด ์ํฐ ๋ฒํผ ๋์ ๋ฐ์ผ๋ก ๋ด๋ ค๊ฐ๋ค๋ ํ์ด์ด ์ถ๋ ฅ๋๋ค.
๐จ ์ด์1. Pull Request์ ๊ฐ commit์ด ์ค์ค์ด ๋ฌ๋ฆฌ๋ ๋ฌธ์
- ์ฐ๋ฆฌ ํ์์ PR์ ํ์ ๋, ๋ค๋ค ์ปค๋ฐ์ด ๊ณ์ ์ถ๊ฐ๋๋ฉฐ PR์ ์ปค๋ฐ์ด ์ฃผ๋ ์ฃผ๋ ๋ฌ๋ ค์์๋ค.
- ์ด์ ์ธ ์ฆ์จ, ๋ณดํต์ ๊ธฐ๋ฅ ๊ตฌํ ์์ฃผ๋ก branch๋ฅผ ์์ฑํ๊ณ develop์ ๋ฐ์ํ๊ณ ์ญ์ ํ๊ณ ๋ค์ ์์ฑํ๋ ํ์์ ๋ฐ๋ณตํ๋๋ฐ, ์ฐ๋ฆฌ๋ ๊ธฐ๋ฅ์ด ์๋ ์กํฐ๋นํฐ๋ผ๋ ํฐ ๋จ์ ๊ธฐ์ค์ผ๋ก branch๋ฅผ ๋๋ ์ ์ค์ค์ด ์ปค๋ฐ ์์์ง๊ฐ ๋ฌ๋ฆฐ ๊ฑฐ์๋ค.
- ๋ธ๋์น ์ ๋ต์ ๋ํด์ ์ฐพ์๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
- ์ฐธ๊ณ ๋ก PR์์ ํ๊ทธ๋ฅผ ๋ฌ๋ฉด ํจ์ฌ ๊น๋ํ๋ค๋ ์ ๋ ์๊ฒ๋์๋ค.
๐จ ์ด์2. ์ฝ๋ฐฑ๋ฉ์๋ ์์ ์๊ฐํ๊ธฐ, ์์ ์ฃผ๊ธฐ ๊ณ ๋ฏผํ๊ธฐ
// onResume() ์ ๋ํ ๊ณ ๋ฏผ
override fun onResume() {
super.onResume()
when (user.image) {
is Image.ImageDrawable -> {
val drawable = user.image as Image.ImageDrawable
binding.civProfileImage.setImageResource(drawable.drawable) //
}
is Image.ImageUri -> {
val uri = (user.image as Image.ImageUri).uri
binding.civProfileImage.setImageURI(uri)
}
}
}
- ์ ์ ์ ์ด๋ฏธ์ง๊ฐ์ ์ฃผ๊ณ ๋ฐ๋ ๋ก์ง์ ๋ํด ์ง๋ฌธํ์ ๋, ์ฝ๋ฐฑ ๋ฉ์๋ ์์ ์ ๋ํด ์๊ฐํด๋ณด๋ ๊ฒ ์ข๋ค๊ณ ํ์ จ๋ค.
- ์ฝ๋ฐฑ ํจ์์ ์ ์๋ ์๋์ ๊ฐ๋ค.
1) ๋ค๋ฅธ ํจ์์ ์ธ์๋ก์จ ์ด์ฉ๋๋ ํจ์
2) ์ด๋ค ์ด๋ฒคํธ์ ์ํด ํธ์ถ๋์ด์ง๋ ํจ์ - myactivity์์ mainactivity๋ก ๊ฐ์ ๋ณด๋ด๊ณ , mainactivity์์ myactivity๋ก ๊ฐ์ ๋ค์ ๊ฐ์ ธ์ฌ ๋ ์๋ช ์ฃผ๊ธฐ์ ๋ฐ๋ฅธ ์ฝ๋ ์์น๋ onResume()์ ๋ํ ๊ณ ๋ฏผ์ด ์กฐ๊ธ ์์๋ ๊ฒ ๊ฐ๋ค.
- ๊ทธ๋ฆฌ๊ณ User ๋ฐ์ดํฐ ํด๋์ค ์ Image๋ฅผ ์ค๋ ํด๋์ค๋ก ๊ตฌํํ ๊ฒ์ ๋ํด์ ํํฐ๋์ด ์๋ฌธ์ ํ์ผ์
จ๋ค.
์ค๋ ๋ง๊ณ ๋ฐ์ดํฐ ํด๋์ค๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ถ์ฒํ์๋ฉด์, '๋ฐ์ดํฐ ํด๋์ค์์ผ๋ฉด .์ ์ด์ฉํด์ ๋ฐ๋ก ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ ํ ๋ฐ ๊ทธ๊ฒ ์๋ผ์ ์ฝ๋๋ฅผ ๋ง์ด ์์ ํ๊ณ ์ ๊ทผ์ด ํ๋ ๊ฑฐ๋ค' ๋ผ๋ ์๊ธฐ๋ฅผ ํด์ฃผ์ จ๋ค. - ํด๋น ๋ถ๋ถ์ ํ์๋ค๊ณผ ๋ ผ์ํ ๊ฒฐ๊ณผ, ์ผ๋จ ์ด๊ธฐ ๊ตฌํ์ ๋ฌธ์ ๋ก ์ค๋ ํด๋์ค๋ฅผ ๊ตฌํํ ๊ฒ์ด๋ผ์ ํด๋น ํด๋์ค์ ๋ง๊ฒ ์ฝ๋๋ฅผ ์์ ํ๋ ๋ฐฉํฅ์ผ๋ก ์ ๋ฆฌ๋๋ค. ๋์ค์ ์ ๋ง ์ฝ๋๋ฅผ ์ ๊ตฌํํ๊ฒ ๋์ ๋ ๋ค์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๊ณ ์ถ๋ค.
๐จ ์ด์3. ์ด๋ฏธ์ง๋ฅผ ์์ ํ์ง ์๊ณ Done๋ฒํผ ํด๋ฆญ ์ ์ฑ์ด ๋ค์ด๋๋ ๋ฌธ์
- ๋ง์ดํ์ด์ง์์ ์ด๋ฏธ์ง๋ฅผ ์์ ํ์ง ์์ ์ฑ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฌ๋ค.
- ์์ธ์ ํ๋กํ์ ์์ ํ๋ ํจ์ editUserInfo ์์ user์ ์ด๋ฏธ์ง๊ฐ์ profileUri!! ๋ฅผ ์ง์ ํ ์ฝ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ์์ ํ์ง ์์ ๋๋ profileUri๊ฐ Null์ผํ ๋ฐ, !!(Not Null)๋ก ๊ฐ์ ๋ฐ์์ฃผ๋ ๋ฐ๋์ ์ฑ์ด ๋ค์ด๋๋ ๊ฒ์ด์๋ค. - ๋ฐ๋ผ์ If๋ฌธ์ผ๋ก null์ด ์๋ ๋๋ง ๋ฐ๋๋ก ์กฐ๊ฑด์ ์ค์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๐จ์ด์4. ์ฌ์ง์ ์์ ํ ๋ค์ ํธ์ง ํ์ด์ง๋ฅผ ๋ค์ด๊ฐ๋ฉด ์ฑ์ด Down๋จ
- ๊ถํ ๋ถ์ฌ์ ๋ฌธ์ ์๋ค.
- Intent.FLAG_GRANT_READ_URI_PERMISSION์ ์๋๋ก์ด๋์์ ์ฌ์ฉ๋๋ ํ๋๊ทธ ์ค ํ๋์ด๋ค.
- ์ด ํ๋๊ทธ๋ ์กํฐ๋นํฐ๋ ์๋น์ค๊ฐ ํน์ URI(Uniform Resource Identifier)์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ์ฑ์ด๋ ์ปดํฌ๋ํธ๊ฐ ์ก์ธ์คํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ, ์๋๋ก์ด๋๋ ๋ฐ์ดํฐ ๋ ธ์ถ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ณด์ ๋ฉ์ปค๋์ฆ์ ์ ์ฉํ๋ค. ์ด๋ FLAG_GRANT_READ_URI_PERMISSION์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ฑ์ด ๋ค๋ฅธ ์ฑ์๊ฒ ํด๋น ๋ฐ์ดํฐ์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ค.. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ์ฑ์๊ฒ ๊ฐค๋ฌ๋ฆฌ์ ์๋ ์ด๋ฏธ์ง ํ์ผ์ ์ ๊ณตํ๋ ค๊ณ ํ ๋, ํด๋น ์ด๋ฏธ์ง์ ๋ํ URI๋ฅผ ํฌํจํ ์ธํ ํธ์ FLAG_GRANT_READ_URI_PERMISSION ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ, ๋์ ์ฑ์ด ์ด ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ์ ์๋๋ก ํ์ฉํ ์ ์๋ค.
- ๋ณด์ ๋๋ฌธ์ ํด๋น ๊ถํ ๋ถ์ฌ ์์ด๋ ๋ค๋ฅธ ์กํฐ๋นํฐ ๊ฐ์ ์ด๋ฏธ์ง ์ ๋ฌ์ด ์ ๋๋ ๊ฒ ๊ฐ์๋ค.
์ด ๋ด์ฉ์ ๋ํด์ ํ์ ๋ถ๋ค๊ณผ ์ธํฐ๋ท์ ์์นญํด๋ '๋ณด์' ๊ด๋ จ ์ด์ผ๊ธฐ ์ธ์ ๋ค๋ฅธ ํด๋ต์ ์ฐพ์ ์ ์๋ ๊ฒ ๊ฐ๋ค. - ์ฐธ๊ณ ๋ก ์ ์ฝ๋์ ์์น ๋ํ ์ค์ํ๋๋ฐ, ์ ๊ฒ์ฒ๋ผ imageUri๋ฅผ ์ค์ ํด ์ฃผ๊ธฐ์ ์ ๊ถํ์ ๋จผ์ ํ ๋นํด์ค์ผ ํ๋ค.
๐จ์ด์5. ๋ง์ดํ์ด์ง -> ๋ก๊ทธ์ธํ์ด์ง๋ก ์ด๋ํ ๋ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ์ฑ ์ข ๋ฃ์ํค๊ธฐ
- ๋ง์ดํ์ด์ง์ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๊ฐ๋ ๋ฒํผ(์ด์ฐ๋ณด๋ฉด ๋ก๊ทธ์์๊ณผ ๋น์ท)์ด ๊ตฌํ๋์ด์๋๋ฐ, ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ ํ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ๋๋ ์ ๋ ๋ค์ ์ด์ ํ์ด์ง์ธ ๋ง์ดํ์ด์ง๊ฐ ํธ์ถ ๋๋ค.
- ์ด์ ๋ํด์ ๋ฒํผ์ ํตํด ๋๊ธฐ๋ ์ธํ ํธ ์ชฝ์ ์ธํ ํธ ํ๋๊ทธ๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ ๋๋ค.
- switchIntent.flags =Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
์ง๊ธ๊น์ง ์์ฌ์๋ ์กํฐ๋นํฐ๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๊ณ ์ฒ์๋ถํฐ ๋ค์ ์กํฐ๋นํฐ๋ฅผ ์์ํ๋ ๊ฒ
๊ธฐํ ์ ๋ฆฌํ์ง ๋ชปํ ์ด์๋ ์ํฉ์ผ๋ก๋
1) deprecated๋ ์ ๋๋ฉ์ด์
(overridePendingTransition())๊ณผ ๊ทธ ์ด์ ์ฐพ๊ธฐ
2) PPT ์์ฑ
์ ๋๊ฐ ์๋ค. ํ๋ฃจ์ ๊ฒช์ ๋ฌธ์ ๋ฐ ํด๊ฒฐ๋ค์ด ๊ณ์ ๋ง๋ค๋ณด๋ TIL์ ์ ๋ฆฌํ๋ ์๊ฐ์ด ๋งค์ฐ ์ค๋๊ฑธ๋ฆฐ๋ค.
๐ญ Retrospect
์ด๋ฒ ์ฃผ ๋ด๋ด ์๊ณ ๋ฆฌ์ฆ์ ๋ชป ํ๊ณ ์๋ค. ์ ๋ฌธ ๊ต์ก ์ฃผ์ฐจ๊น์ง๋ ์์ ์๊ฐ์ด ๋๋ํ์ ๋๋ํ์ง, ์ด๋ ๊ฒ๊น์ง ์๊ฐ์ด ๋ถ์กฑํด์ง์ค์ 1๋ ๋ชฐ๋๋ค. ์ด๋ฒ ์ฃผ๋ ๋งค์ผ ํด์ผ ํ ํฌ๋๋ฆฌ์คํธ๋ค์ด ๋น์ผ์ ํด๊ฒฐ์ด ์ ๋๊ณ ๋ค์๋ ์ฌ์ง์ด๋ ๋ค๋ค์๋ ๊น์ง ์คํ๋์ด๊ฐ๋๋ผ. ๋ ์ ์์ผ๋ฉด ์ด๋ฒ ์ฃผ๋ง๊ณผ, ์๋ จ ๊ต์ก ์ฃผ์ฐจ์ธ ๋ค์์ฃผ์ ๋ฐ๋ฆฐ ์ผ๋ค์ ์ธ๊ทธ๋ฆฌ ํด์น์ฐ๋ ๊ฒ ๋ชฉํ๋ค.
ํ๋ก์ ํธ ์ด๋ฐ์๋ ํ์ ๊ฐ๊ฐ์ธ๋ง๋ค ๊ฐ์ง ์ญ๋๊ณผ ๊ฒฝํ์น๋ ๋ค๋ฅด๊ณ , ํ์
์ผ๋ก ์ ๋ฐ๋๋ Git ์ค๋ฅ๋ถํฐ ๊ตฌํํด๋ณด์ง ๋ชปํ๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ๊น์ง ์ฌ๋ฌ๋ชจ๋ก ํ๋ค์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฐ๋ฐ ํ๋ก์ ํธ๊ฐ ํ๋ฐ์ ์ ์ด๋ ์ง๊ธ์ ๊ทธ๋ฅ ๋ญ๋๊น ๋ง์ด ํ๋ จํ๊ธฐ๋ ํ๊ณ ์์ฒญ ๋ฐ์ ํ ๊ฒ ๊ฐ๋ค. Git์ ํผ์ ์ฌ์ฉํ์ผ๋ฉด ์ ํ ๊ฒช์ด๋ณด์ง ๋ชปํ์ ๊ฒฝํ๋ ๋ง์ด ํ๊ณ , ๋ค๋ฅธ ํ์๋ถ๋ค์ ์ฝ๋ ๊ตฌํ์ ๋ณด๋ฉด์ '์ด๊ฑด ๋ฌด์จ ์ฝ๋์ง?' '์ ์ด๋ ๊ฒ ๊ตฌํํ์ง?'ํ๋ ์๊ฐ์ ๊ฑฐ์น๋ฉด์๋ ์ฑ์ฅํ๋ค. ๋ฐฐ์ธ ์ ์ด ๋ง์ ๋ถ๋ค๊ณผ ํ์ด ๋์ด์ ์ข์๋ ๊ฒ ๊ฐ๋ค.
์บ ํ๊ฐ ์งํ๋ ์๋ก ์ฌ๋๋ค๋ผ๋ฆฌ ์นํด์ง๋ ๊ฒ ์ ๊ธฐํ๋ค.
โ