์๋๋ก์ด๋ ๊ฐ๋ฐ์ ํ๋ฉด์ ๊ฐ์ฅ ์ค์ํ ์ ์ ๊ทธ๋ฅ ๊ธฐ๋ฅ์ ์ ๋ถ์ด๋๊ฒ ์๋๋๊ฑธ ๋ง์ ๋ถ๋ค์ด ๊ณต๊ฐํ์ค๊ฑฐ๋ค.
ํธ๋ํฐ๋ ์์ ์ปดํจํฐ์ด๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์ ํด์ผํ๊ณ ๊ณผ๋ถํ๊ฐ ์ค์ง ์๊ฒ, ์ฌ์ฉ์๊ฐ ๋งค๋๋ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๊ฐ๋ฐ์ ํ๋๊ฒ ๊ฐ๋ฐ์ ์ํ๋ค๊ณ ์๊ฐํ๋ค.(ํ์ฌ๊น์ง...)
์ฐ์ฐจ๊ฐ ์์ด๊ณ ๊ฒฌํด์ ์ง์์ด ์กฐ๊ธ์ฉ ๋์ด๊ฐ์๋ก ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ๋ค์ด ๋ณํด๊ฐ๋ฉด์ ๊ณต๋ถํด์ผํ๋ ๊ฒ๋ค์ด ๋ง์์ง๋ค.
๋ฐฐ์์๋ ๋์ด ์๋ ๊ฒ ๊ฐ๋ค.
์ผ๋จ Thread๋ ๋ฌด์์ธ๊ฐ?
๐ ์ฌ์ ์ ์๋ฏธ
- "ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์"
- ํ๋ก์ธ์ค์ ํน์ ํ ์ํ ๊ฒฝ๋ก
- ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ์ ๋จ์
๐ง๐ปโ๐ป ์ดํดํ๊ธฐ ์ฌ์ด ๋๋ง์ ์๋ฏธ
- ๋ฐฅ์ ๋ง๋ค ๋ ๋ฐฅ์ฅ์ ์ทจ์ฌ๋ฒํผ์ ๋๋ฅด๊ณ ๋ฐฅ์ด ๋ค ๋ ๋๊น์ง ๊ตญ์ ๋์ธ๋ค๊ฑฐ๋, ๋ฐ์ฐฌ์ ํ๋ค
- ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ค์ด ๋ฐ๊ณ ์์ ๋ ์น์ํ์ ํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์ฌ์ฉ๋ฒ์ ์ฝ๊ณ ์๋ ๊ฒ
๋ณดํต ์ฐ๋ฆฌ๋ ํ ๊ฐ์ง์ ์ผ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ์ผ์ ํ๊ฑฐ๋ ์ฌ๊ณ ์๋๋ค.
์ด์ฒ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๋ ค๋๊ณ ๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ํ๋ ๊ฒ์ด ์ค๋ ๋๋ผ๊ณ ํ ์ ์๋ค.
์ฌ๊ธฐ์ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ๋์ค๋๋ฐ ํ๋ก์ธ์ค(Process)๋
- "์ปดํจํฐ์์ ์ฐ์์ ์ผ๋ก ์คํ๋๊ณ ์๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ"
- ์ด์์ฒด์ ๋ก๋ถํฐ ์์คํ ์์์ ํ ๋น๋ฐ๋ ์์ ์ ๋จ์

์ ์ฌ์ง์ ํ๋ก์ธ์ค๋ฅผ ์ค๋ช ํด์ฃผ๋๋ฐ ๋ด๊ฐ ์ดํดํ๋ ๋ฐ๋ก ์ค๋ช ์ ํด๋ณด์๋ฉด
Process(ํ๋ก์ธ์ค)๋ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ ์ด๋ผ๊ณ ์ดํด๊ฐ ๋๋ค.
ํ๋ก์ธ์ค๋ ์์คํ ์ผ๋ก๋ถํฐ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ํ ๋น๋ฐ๋๋ฐ
- ์ ์ฌ์ง์์ ๋ณด๋ค์ํผ Code, Data, Stack, Heap์ ๊ตฌ์กฐ๋ก ๋์ด ์๋ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- CPU ์๊ฐ
- ์ด์๋๊ธฐ ์ํด ํ์ํ ์ฃผ์ ๊ณต๊ฐ
์ด ์๋ค.
๊ทธ๋ผ ๋ค์ ๋์์์ Thread๋ "ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์" ๋ผ๊ณ ํ์๋๋ฐ ์ค๋ ๋๋ ์๋์ ๊ฐ์ ๊ตฌ์กฐ์ด๋ค.

์ฌ์ง์ ๋ณด๋ฉด ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๋ฅผ ์์ฑํ ์ ์๊ณ Stack์ ๋ฐ๋ก ํ ๋น ๋ฐ๋๊ฒ ๋ณด์ธ๋ค.
- ์ค๋ ๋๋ ํ ํ๋ก์ธ์ค ๋ด์์ ๊ฐ๊ฐ Stack๋ง ๋ฐ๋ก ํ ๋น๋ฐ๊ณ Code, Data, Heap ์์ญ์ ๊ณต์ ํ๋ค.
์ฌ๊ธฐ์ Code, Data, Heap, Stack์ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด.
- Code : ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋, ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ ์์ญ
- Data : ์ ์ญ๋ณ์, ์ ์ ๋ณ์, ๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด ๋ฑ์ด ์ ์ฅ๋๋ค.
- Heap : ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ ๊ด๋ฆฌํด์ผ๋ง ํ๋ ์์ญ
- Stack : ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์๋ ์ฌ์ง์ผ๋ก ๋ณด๋ฉด Code์ Data์์ญ๋ ๊ณ ์ ์ด์ง๋ง Heap๊ณผ Stack์์ญ์ ๋์ ์ผ๋ก ์์ง๋ ๊ฒ์ ํํํ๊ณ ์๋ค.

์ด์ ์ด๋์ ๋ ์ค๋ ๋๊ฐ ์ด๋ค์์ผ๋ก ํ ๋น๋๋์ง ์์๋ค๋ฉด ์๋๋ก์ด๋์ ์ค๋ ๋๋ฅผ ์์๋ณด์.
์๋๋ก์ด๋๋ ์ค๋ ๋๊ฐ Main Thread(UI Thread), Worker Thread ํฌ๊ฒ 2๊ฐ์ง๋ก ๋ถ๋ฅํฉ๋๋ค.
1. ๋ฉ์ธ์ค๋ ๋ Main Thread( = UI Thread)
๋ฉ์ธ ์ค๋ ๋๋ ์กํฐ๋นํฐ์ ์ปดํฌ๋ํธ๋ค์ ์ฌ์ฉ์ ๋ด๋นํ๊ณ ์ฐ๋ํ๋ ์ญํ ์ ํฉ๋๋ค. UI ์ปดํฌ๋ํธ๋ค๊ณผ ๋ฐ์ ํ ์ฐ๊ด์ด ์๋ ์ค๋ ๋์ด๋ค ๋ณด๋ UI Thread๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. (ํ๋ฉด์ ํ์ํ ์ด๋ฏธ์ง๋ ๊ธ๋ฑ์ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ)
๊ทธ๋์ System Call-Back Method, Lifecycle์ ๊ด๋ จ๋ Method ๋ค์ ๋ฐ๋์ ๋ฉ์ธ ์ค๋ ๋์์ ๊ด๋ฆฌ๋์ด์ผ ํฉ๋๋ค.
2. ์์ ์ค๋ ๋ Worker Thread
์์ ์ค๋ ๋๋ ๋ค๋ฅธ ์์ ๋ค์ ์ํด ๋ฉ์ธ ์ค๋ ๋๊ฐ UI์ ๋๊ธฐํ ๋์ง ๋ชปํ๊ณ ์ง์ฐ๋๋ ๊ฒฝ์ฐ์ ANR(Android Not Responding -> UI ๊ด๋ จ ์์ ์ด ์ผ์ ๊ธฐ๊ฐ ๋ฐ์๋์ง ๋ชปํ๋ฉด ๋ฐ์)์ด ๋ฐ์ํ๋๋ฐ
๊ทธ๊ฒ์ ๋ง๊ธฐ ์ํด ์์ ์ค๋ ๋์์ ๋น๋๊ธฐ ์์ (์ ๋๋ฉ์ด์ ), High cost์ ์ฐ์ฐ์์ (Database ์ฒ๋ฆฌ ๋ฑ)์ ๊ฐ์ ๊ฒ ๋ค์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค.
ํ์ง๋ง View ๋ฑ์ UI ๊ด๋ จ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ์์ ์ ๋ฉ์ธ ์ค๋ ๋์์ ์งํ๋์ด์ผ ํ๋๋ฐ ์ ๋๋ฉ์ด์ ๋ฑ์ ๋น๋๊ธฐ์์ ์ ์งํํ๋ฉฐ UI๋ฅผ ์์ ํด์ผํ๋ค๋ฉด, Coroutine์ด๋ RxJava ๋ฑ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
Coroutine๊ณผ RxJava๋ ๋น๋๊ธฐ ์์ ์ ์ํด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Thread, Handler, Message, Runnable ๋ฑ์ ์ง์ ๋ค๋ฃจ์ง ์์๋ ๋ฉ์ธ ์ค๋ ๋์ ๋ณ๊ฐ๋ก ๋น๋๊ธฐ ์คํ์ ํ์ํ ์์ ์์ ์ฌ์ฉ ํ ์ ์๋ค.(Coroutine์ ๊ดํด์๋ ๋ค์์ ๊ผญ๊ผญ ๋ฐ๋ก ๋ค๋ฃฐ ์์ )
์ฐธ๊ณ :
[OS] ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
์๋๋ก์ด๋ AsyncTask. (Android AsyncTask)
1. ๋น๋๊ธฐ ์์ ์ ์ํ AsyncTask. [์๋๋ก์ด๋ ํ๋ก๊ทธ๋๋ฐ. ์ค๋ ๋.]์ ์ฌ๋ฌ ๊ธ๋ค์ ํตํด, ์๋๋ก์ด๋์์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ ์๋ก์ด ์ค๋ ๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ํธ๋ค๋ฌ๋ฅผ ํตํ
recipes4dev.tistory.com
'Development > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋๋ก์ด๋์์ ์ฝ๋ฃจํด / Coroutine ์จ๋ด ์๋ค - 1 (0) | 2023.07.24 |
---|---|
DI - Hilt์ ๊ดํ์ฌ (0) | 2023.07.10 |
๐ ์ฌ์ฉ์๋ค์ด ์ฑ์ ์ ์ ๋ชป ์ฐ๊ฒ ํ ์ ์๋? - Firebase Remote Config (0) | 2022.09.18 |
Databinding ์์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ค์ ๊ฐ๊ณตํ ๊น? ๐ฝ (1) | 2022.09.18 |
๐ฆ Databinding์ ์ฐ๋ฉด์ - 2 (0) | 2022.09.08 |
์๋๋ก์ด๋ ๊ฐ๋ฐ์ ํ๋ฉด์ ๊ฐ์ฅ ์ค์ํ ์ ์ ๊ทธ๋ฅ ๊ธฐ๋ฅ์ ์ ๋ถ์ด๋๊ฒ ์๋๋๊ฑธ ๋ง์ ๋ถ๋ค์ด ๊ณต๊ฐํ์ค๊ฑฐ๋ค.
ํธ๋ํฐ๋ ์์ ์ปดํจํฐ์ด๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ์ ํด์ผํ๊ณ ๊ณผ๋ถํ๊ฐ ์ค์ง ์๊ฒ, ์ฌ์ฉ์๊ฐ ๋งค๋๋ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๊ฐ๋ฐ์ ํ๋๊ฒ ๊ฐ๋ฐ์ ์ํ๋ค๊ณ ์๊ฐํ๋ค.(ํ์ฌ๊น์ง...)
์ฐ์ฐจ๊ฐ ์์ด๊ณ ๊ฒฌํด์ ์ง์์ด ์กฐ๊ธ์ฉ ๋์ด๊ฐ์๋ก ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ๋ถ๋ถ๋ค์ด ๋ณํด๊ฐ๋ฉด์ ๊ณต๋ถํด์ผํ๋ ๊ฒ๋ค์ด ๋ง์์ง๋ค.
๋ฐฐ์์๋ ๋์ด ์๋ ๊ฒ ๊ฐ๋ค.
์ผ๋จ Thread๋ ๋ฌด์์ธ๊ฐ?
๐ ์ฌ์ ์ ์๋ฏธ
- "ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์"
- ํ๋ก์ธ์ค์ ํน์ ํ ์ํ ๊ฒฝ๋ก
- ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ๋ ์คํ์ ๋จ์
๐ง๐ปโ๐ป ์ดํดํ๊ธฐ ์ฌ์ด ๋๋ง์ ์๋ฏธ
- ๋ฐฅ์ ๋ง๋ค ๋ ๋ฐฅ์ฅ์ ์ทจ์ฌ๋ฒํผ์ ๋๋ฅด๊ณ ๋ฐฅ์ด ๋ค ๋ ๋๊น์ง ๊ตญ์ ๋์ธ๋ค๊ฑฐ๋, ๋ฐ์ฐฌ์ ํ๋ค
- ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋ค์ด ๋ฐ๊ณ ์์ ๋ ์น์ํ์ ํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ ์ฌ์ฉ๋ฒ์ ์ฝ๊ณ ์๋ ๊ฒ
๋ณดํต ์ฐ๋ฆฌ๋ ํ ๊ฐ์ง์ ์ผ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค๋ฅธ ์ผ์ ํ๊ฑฐ๋ ์ฌ๊ณ ์๋๋ค.
์ด์ฒ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๋ ค๋๊ณ ๋ค๋ฅธ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ํ๋ ๊ฒ์ด ์ค๋ ๋๋ผ๊ณ ํ ์ ์๋ค.
์ฌ๊ธฐ์ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ๋์ค๋๋ฐ ํ๋ก์ธ์ค(Process)๋
- "์ปดํจํฐ์์ ์ฐ์์ ์ผ๋ก ์คํ๋๊ณ ์๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ"
- ์ด์์ฒด์ ๋ก๋ถํฐ ์์คํ ์์์ ํ ๋น๋ฐ๋ ์์ ์ ๋จ์

์ ์ฌ์ง์ ํ๋ก์ธ์ค๋ฅผ ์ค๋ช ํด์ฃผ๋๋ฐ ๋ด๊ฐ ์ดํดํ๋ ๋ฐ๋ก ์ค๋ช ์ ํด๋ณด์๋ฉด
Process(ํ๋ก์ธ์ค)๋ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ ์ด๋ผ๊ณ ์ดํด๊ฐ ๋๋ค.
ํ๋ก์ธ์ค๋ ์์คํ ์ผ๋ก๋ถํฐ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ํ ๋น๋ฐ๋๋ฐ
- ์ ์ฌ์ง์์ ๋ณด๋ค์ํผ Code, Data, Stack, Heap์ ๊ตฌ์กฐ๋ก ๋์ด ์๋ ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- CPU ์๊ฐ
- ์ด์๋๊ธฐ ์ํด ํ์ํ ์ฃผ์ ๊ณต๊ฐ
์ด ์๋ค.
๊ทธ๋ผ ๋ค์ ๋์์์ Thread๋ "ํ๋ก์ธ์ค ๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ์ ๋จ์" ๋ผ๊ณ ํ์๋๋ฐ ์ค๋ ๋๋ ์๋์ ๊ฐ์ ๊ตฌ์กฐ์ด๋ค.

์ฌ์ง์ ๋ณด๋ฉด ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๋ฅผ ์์ฑํ ์ ์๊ณ Stack์ ๋ฐ๋ก ํ ๋น ๋ฐ๋๊ฒ ๋ณด์ธ๋ค.
- ์ค๋ ๋๋ ํ ํ๋ก์ธ์ค ๋ด์์ ๊ฐ๊ฐ Stack๋ง ๋ฐ๋ก ํ ๋น๋ฐ๊ณ Code, Data, Heap ์์ญ์ ๊ณต์ ํ๋ค.
์ฌ๊ธฐ์ Code, Data, Heap, Stack์ ๊ฐ๋จํ ์ค๋ช ํ์๋ฉด.
- Code : ์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋, ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ ์์ญ
- Data : ์ ์ญ๋ณ์, ์ ์ ๋ณ์, ๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด ๋ฑ์ด ์ ์ฅ๋๋ค.
- Heap : ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ ๊ด๋ฆฌํด์ผ๋ง ํ๋ ์์ญ
- Stack : ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
์๋ ์ฌ์ง์ผ๋ก ๋ณด๋ฉด Code์ Data์์ญ๋ ๊ณ ์ ์ด์ง๋ง Heap๊ณผ Stack์์ญ์ ๋์ ์ผ๋ก ์์ง๋ ๊ฒ์ ํํํ๊ณ ์๋ค.

์ด์ ์ด๋์ ๋ ์ค๋ ๋๊ฐ ์ด๋ค์์ผ๋ก ํ ๋น๋๋์ง ์์๋ค๋ฉด ์๋๋ก์ด๋์ ์ค๋ ๋๋ฅผ ์์๋ณด์.
์๋๋ก์ด๋๋ ์ค๋ ๋๊ฐ Main Thread(UI Thread), Worker Thread ํฌ๊ฒ 2๊ฐ์ง๋ก ๋ถ๋ฅํฉ๋๋ค.
1. ๋ฉ์ธ์ค๋ ๋ Main Thread( = UI Thread)
๋ฉ์ธ ์ค๋ ๋๋ ์กํฐ๋นํฐ์ ์ปดํฌ๋ํธ๋ค์ ์ฌ์ฉ์ ๋ด๋นํ๊ณ ์ฐ๋ํ๋ ์ญํ ์ ํฉ๋๋ค. UI ์ปดํฌ๋ํธ๋ค๊ณผ ๋ฐ์ ํ ์ฐ๊ด์ด ์๋ ์ค๋ ๋์ด๋ค ๋ณด๋ UI Thread๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. (ํ๋ฉด์ ํ์ํ ์ด๋ฏธ์ง๋ ๊ธ๋ฑ์ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ)
๊ทธ๋์ System Call-Back Method, Lifecycle์ ๊ด๋ จ๋ Method ๋ค์ ๋ฐ๋์ ๋ฉ์ธ ์ค๋ ๋์์ ๊ด๋ฆฌ๋์ด์ผ ํฉ๋๋ค.
2. ์์ ์ค๋ ๋ Worker Thread
์์ ์ค๋ ๋๋ ๋ค๋ฅธ ์์ ๋ค์ ์ํด ๋ฉ์ธ ์ค๋ ๋๊ฐ UI์ ๋๊ธฐํ ๋์ง ๋ชปํ๊ณ ์ง์ฐ๋๋ ๊ฒฝ์ฐ์ ANR(Android Not Responding -> UI ๊ด๋ จ ์์ ์ด ์ผ์ ๊ธฐ๊ฐ ๋ฐ์๋์ง ๋ชปํ๋ฉด ๋ฐ์)์ด ๋ฐ์ํ๋๋ฐ
๊ทธ๊ฒ์ ๋ง๊ธฐ ์ํด ์์ ์ค๋ ๋์์ ๋น๋๊ธฐ ์์ (์ ๋๋ฉ์ด์ ), High cost์ ์ฐ์ฐ์์ (Database ์ฒ๋ฆฌ ๋ฑ)์ ๊ฐ์ ๊ฒ ๋ค์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค.
ํ์ง๋ง View ๋ฑ์ UI ๊ด๋ จ ์ปดํฌ๋ํธ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ์์ ์ ๋ฉ์ธ ์ค๋ ๋์์ ์งํ๋์ด์ผ ํ๋๋ฐ ์ ๋๋ฉ์ด์ ๋ฑ์ ๋น๋๊ธฐ์์ ์ ์งํํ๋ฉฐ UI๋ฅผ ์์ ํด์ผํ๋ค๋ฉด, Coroutine์ด๋ RxJava ๋ฑ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
Coroutine๊ณผ RxJava๋ ๋น๋๊ธฐ ์์ ์ ์ํด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Thread, Handler, Message, Runnable ๋ฑ์ ์ง์ ๋ค๋ฃจ์ง ์์๋ ๋ฉ์ธ ์ค๋ ๋์ ๋ณ๊ฐ๋ก ๋น๋๊ธฐ ์คํ์ ํ์ํ ์์ ์์ ์ฌ์ฉ ํ ์ ์๋ค.(Coroutine์ ๊ดํด์๋ ๋ค์์ ๊ผญ๊ผญ ๋ฐ๋ก ๋ค๋ฃฐ ์์ )
์ฐธ๊ณ :
[OS] ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
์๋๋ก์ด๋ AsyncTask. (Android AsyncTask)
1. ๋น๋๊ธฐ ์์ ์ ์ํ AsyncTask. [์๋๋ก์ด๋ ํ๋ก๊ทธ๋๋ฐ. ์ค๋ ๋.]์ ์ฌ๋ฌ ๊ธ๋ค์ ํตํด, ์๋๋ก์ด๋์์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ ์๋ก์ด ์ค๋ ๋๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ํธ๋ค๋ฌ๋ฅผ ํตํ
recipes4dev.tistory.com
'Development > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋๋ก์ด๋์์ ์ฝ๋ฃจํด / Coroutine ์จ๋ด ์๋ค - 1 (0) | 2023.07.24 |
---|---|
DI - Hilt์ ๊ดํ์ฌ (0) | 2023.07.10 |
๐ ์ฌ์ฉ์๋ค์ด ์ฑ์ ์ ์ ๋ชป ์ฐ๊ฒ ํ ์ ์๋? - Firebase Remote Config (0) | 2022.09.18 |
Databinding ์์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ค์ ๊ฐ๊ณตํ ๊น? ๐ฝ (1) | 2022.09.18 |
๐ฆ Databinding์ ์ฐ๋ฉด์ - 2 (0) | 2022.09.08 |