Moments of growth

[kotlin] ๋ฐฑ์Šคํƒ ์ •๋ฆฌ ๋ณธ๋ฌธ

Android [Kotlin] ๐Ÿ’ป๐Ÿค

[kotlin] ๋ฐฑ์Šคํƒ ์ •๋ฆฌ

๋ฎค๋ง์ด 2022. 7. 11. 02:21

 

RegisterActivity

-> ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ ํ›„ ๋’ค๋กœ ๊ฐ€๊ธฐํ–ˆ์„ ๋•Œ ์Šคํƒ์— ๋‚จ์•„์žˆ์ง€ ์•Š๊ฒŒ ํ•จ

val intent = Intent(this, RegisterNameIdActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) //์Šคํƒ์— ๋‚จ์ง€ ์•Š๊ฒŒ
startActivity(intent)

์ฃผ์˜ํ•  ์ ์€ manifest์—์„œ ๋ฌด์กฐ๊ฑด noHistory = "true" ๋ผ๋Š” ์†์„ฑ์„ ์ค˜์•ผํ•œ๋‹ค.

<activity
    android:name=".ui.registration.RegisterActivity"
    android:screenOrientation="portrait"
    android:exported="false"
    android:noHistory = "true"
    android:label="@string/title_activity_register"
    android:theme="@style/Theme.SeeMeet.NoActionBar" />

์˜ˆ๋ฅผ ๋“ค์–ด a -> RegisterActivity -> c ์ˆœ์œผ๋กœ ์ง„ํ–‰์ธ ๊ฒฝ์šฐ c์—์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด a๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ์—์„œ๋Š” LoginMainActivity -> RegisterActivity(์ด๋ฉ”์ผ, ๋น„๋ฒˆ ์ž…๋ ฅ) -> RegisterNameIdActivity(์ด๋ฆ„, ์•„์ด๋”” ์ž…๋ ฅ) ์œผ๋กœ ์ด๋ฉ”์ผ, ๋น„๋ฒˆ ์ž…๋ ฅ ํ›„ ์ด๋ฆ„ ์•„์ด๋”” ์ฐฝ์œผ๋กœ ๋„˜์–ด๊ฐ”์„ ๋•Œ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ์•„์˜ˆ ํšŒ์›๊ฐ€์ž…์„ ์ค‘๋‹จํ•˜๊ณ  LoginMain ํ™”๋ฉด์œผ๋กœ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ํ–ˆ๋‹ค.

 

 

 

RegisterNameIdActivity

-> ์ด๋ฆ„ ์•„์ด๋””๋ฅผ ๋‹ค ์ž…๋ ฅํ•˜๊ณ  ํšŒ์›๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ์Šคํƒ๋“ค์„ ๋ชจ๋‘ ๋ฒ„๋ฆฌ๊ณ  ํ™ˆ์œผ๋กœ ๊ฐ„๋‹ค.

val intent = Intent(this@RegisterNameIdActivity, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) //๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‚ญ์ œ
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
this@RegisterNameIdActivity.startActivity(intent)

-> ์ด๋ฆ„, ์•„์ด๋”” ์ž…๋ ฅ ์ฐฝ์—์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด๋‚˜, X ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๊ฒฝ์šฐ

val intent = Intent(this@RegisterNameIdActivity, LoginMainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)

LoginMainActivity -> RegisterActivity -> RegisterNameIdActivity์—์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ๋‚˜ X ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ค‘๊ฐ„์˜ RegisterActivity๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  LoginMainActivity๋กœ ๊ฐ€๊ฒŒ ํ–ˆ๋‹ค. ์Šคํƒ์— ์ด๋ฏธ ์žˆ์œผ๋ฏ€๋กœ FLAG_ACTIVITY_CLEAR_TOP์„ ์ผ๋‹ค.

 

 

 

LoginActivity

-> ๋กœ๊ทธ์ธ์˜ ๊ฒฝ์šฐ ๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ๊ฒƒ๋“ค์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ํ™ˆ์œผ๋กœ ๊ฐ€๊ฒŒ ํ•œ๋‹ค.

val intent = Intent(this@LoginActivity, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) //๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‚ญ์ œ
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
this@LoginActivity.startActivity(intent)

 

 

 

MyPageActivity

-> ํƒˆํ‡ดํ•  ๋•Œ, ๋กœ๊ทธ์•„์›ƒํ•  ๋•Œ ๊ทธ ์ „์— ์Šคํƒ์— ์Œ“์—ฌ์žˆ๋˜ ๋ชจ๋“  ๊ฒƒ๋“ค์„ ์‚ญ์ œํ•œ๋‹ค.

val intent = Intent(this@MyPageActivity, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) //๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์‚ญ์ œ
this@MyPageActivity.startActivity(intent)

ํƒˆํ‡ด, ๋กœ๊ทธ์•„์›ƒ ์‹œ ๊ธฐ์กด์— ์Œ“์—ฌ์žˆ๋˜ ๊ฒƒ๋“ค์„ ์‚ญ์ œํ•˜๊ณ  ํ™ˆ์œผ๋กœ ๊ฐ€์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ์•„๋ฌด๊ฒƒ๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‘๋ฒˆ ๋ˆ„๋ฅด๋ฉด ์ข…๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

ChangePwActivity

-> ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹œ ๋‹ค์‹œ MyPage๋กœ ๋Œ์•„๊ฐ„๋‹ค.

val intent = Intent(this@ChangePwActivity, MyPageActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
this@ChangePwActivity.startActivity(intent)

* FLAG_ACTIVITY_CLEAR_TOP

ํ˜ธ์ถœํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์Šคํƒ์— ์กด์žฌํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ตœ์ƒ์œ„๋กœ ์˜ฌ๋ฆฌ๊ณ , ๊ทธ ์ดํ›„ ์Šคํƒ์— ์กด์žฌํ•˜๋Š” ๊ธฐ์กด ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์ œ๊ฑฐํ•œ๋‹ค.

 

Home -> MyPageActivity -> ChangePwActivity ์ด๋ ‡๊ฒŒ ์˜จ ์ƒํƒœ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ๋‚˜๋ฉด ๋‹ค์‹œ MyPageActivity๋กœ ๋Œ์•„๊ฐ€์•ผํ•œ๋‹ค. ํ˜ธ์ถœํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ด๋ฏธ ์Šคํƒ์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— FLAG_ACTIVITY_CLEAR_TOP์„ ์จ์„œ MyPageActivity๋ฅผ ์ตœ์ƒ์œ„๋กœ ์˜ฌ๋ฆฌ๊ณ  ๊ทธ ์ดํ›„์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค. ๊ทธ ์ „์— ์žˆ๋˜ Home์€ ๋‚จ์•„์žˆ๋‹ค. 

๋”ฐ๋ผ์„œ Home -> MyPageActivity๋งŒ ๋‚จ๊ฒŒ๋œ๋‹ค. ChangePwActivity์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ํ›„ MyPageActivity๋กœ ๋Œ์•„์˜จ ์ƒํƒœ์—์„œ ๋’ค๋กœ ๊ฐ€๊ธฐ๋ฅผ ํ•˜๋ฉด Home์œผ๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

 

 

Reference)

 

Task (5.1) - Activity ์ •๋ฆฌ [FLAG_ACTIVITY_NO_HISTORY]

FLAG_ACTIVITY_NO_HISTORY ํ•ด๋‹น ์†์„ฑ์ด ์ ์šฉ๋œ activity ์˜ ๊ฒฝ์šฐ activity stack ์— ๋‚จ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ํ•ด๋‹น activity ๋Š” back key ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ๋‹ค์‹œ ํ™œ์„ฑํ™” ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Password activity ์™€ ๊ฐ™์ด ์ตœ..

parkho79.tistory.com

 

[์•ˆ๋“œ๋กœ์ด๋“œ] ํƒœ์Šคํฌ(Task)์™€ ๋ฐฑ ์Šคํƒ(Back Stack)์˜ ๊ฐœ๋…๊ณผ Launch Mode, Intent Flag

ํƒœ์Šคํฌ(Task) ํƒœ์Šคํฌ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ์Šคํƒ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์™€ ์—ฌ๋Ÿฌ ์ •๋ณด์˜ ์ฝœ๋ ‰์…˜์ด๋‹ค. ์•ฑ์˜ ๋Ÿฐ์ฒ˜ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์—์„œ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์€ ์žฌ๊ฐœ(resume)ํ•  ์ด์ „์˜ ๊ธฐ์กด ์ž‘์—…

bb-library.tistory.com

 

์ž‘์—… ๋ฐ ๋ฐฑ ์Šคํƒ ์ดํ•ด  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

์ผ๋ฐ˜์ ์œผ๋กœ ์•ฑ์—๋Š” ์—ฌ๋Ÿฌ ํ™œ๋™์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํ™œ๋™์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ์ข…๋ฅ˜์˜ ์ž‘์—…์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ํ™œ๋™์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฉ”์ผ ์•ฑ์—๋Š”

developer.android.com

Comments