<aside> ๐ก Application Not Responding
</aside>
Android ์ฑ์ UI ์ค๋ ๋๊ฐ ๋๋ฌด ์ค๋ซ๋์ ์ฐจ๋จ๋๋ฉด 'ANR(์ ํ๋ฆฌ์ผ์ด์ ์๋ต์์)' ์ค๋ฅ๊ฐ ๋ํ๋๊ฒ ๋๋ค. ์ฑ์ด ํฌ๊ทธ๋ผ์ด๋์ ์์ผ๋ฉด ์๋์ ๊ฐ์ด ์์คํ ์์ ์ฌ์ฉ์์๊ฒ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ํ์ํ๋ค.
์๋๋ก์ด๋ ํ๋ ์์ํฌ์์ ANR ๊ด๋ จํ ๋ด์ฉ์ com.android.server.am.ActivityManagerService์์ ํ์ธ ํ ์ ์๋ค.(ActivityManagerService๋ system_server ํ๋ก์ธ์ค์์ ์คํ๋๋ค)
static final int BROADCAST_FG_TIMEOUT = 10 * 1000;
static final int BROADCAST_BG_TIMEOUT = 60 * 1000;
static final int KEY_DISPATCHING_TIMEOUT = 5 * 1000;
ํ๋ฉด ํฐ์น์ ํค ์ ๋ ฅ์์ ANR
-๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ด๋์ ๊ฐ ์ด๋ฏธ ์ ์ ํ๊ณ ์๋ค๋ฉด ํค ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ์ง ๋ชปํ๋๋ฐ, ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ ์ ์๋ ์๊ฐ์ด ํ์์์์ ๋๋๋ค๋ฉด ์ด๋ ANR์ด ๋ฐ์ํ๋ค. ํค ์ด๋ฒคํธ์ธ ๋ณผ๋ฅจ, ๋ฉ๋ด, ๋ฐฑ ํค์ ๊ฒฝ์ฐ๋ ๋๋ฆฌ๊ณ ์ 5์ด ์ด์ ์ง์ฐ ์ ๋ฐ๋ก ANR์ ๋ฐ์์ํจ๋ค. ์ฐธ๊ณ ๋ก ํ ํค์ ์ ์ ํค๋ ์ฑ๊ณผ ๋ณ๊ฐ๋ก ๋์ํ๊ณ ANR ๋ฐ์๊ณผ๋ ๋ฌด๊ดํ๋ค.
ํฐ์น ์ด๋ฒคํธ๋ ๊ฒฝ์ฐ๊ฐ ๋ค๋ฅด๋ค. ํฐ์น ์ด๋ฒคํธ๋ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ๋๊ธฐํ๋ ๊ฒ์ ๋์ผํ์ง๋ง ํ์์์ ๋๋ค๊ณ ํด์ ๋ฐ๋ก ANR์ด ๋ฐ์ํ์ง ์๋๋ค. ๊ทธ ๋ค์์ผ๋ก ์ด์ด์ ํฐ์น ์ด๋ฒคํธ๊ฐ ์์ ๋๋ ๋ ๋ฒ์งธ ํฐ์น ์ด๋ฒคํธ๊ฐ ์ ๋ฌ๋์ง ์๋ ์๊ฐ์ด ํ์์์๋๋ฉด ANR์ด ๋ฐ์ํ๋ค. ์๋ฅผ๋ค์ด, ์ด๋์ ๊ฐ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ๋ธ๋กํนํ๊ณ ์๋๋ฐ ์ด๋ ์ฒซ ๋ฒ์งธ ํฐ์น ์ด๋ฒคํธ๋ง์ผ๋ก๋ ANR์ด ๋ฐ์ํ์ง ์๋๋ค. ๋ ๋ฒ์งธ ํฐ์น ์ด๋ฒคํธ๊ฐ ์๊ณ ์ 5์ด๊ฐ ์ง๋๋ฉด ๊ทธ๋์์ผ ANR์ด ๋ฐ์ํ๋ค.
Message ์ฒ๋ฆฌ ๊ฐ๊ฐ์ด 5์ด ์ด๋ด๋ผ๋ ์ดํฉ ์ฒ๋ฆฌ ์๊ฐ ์ํฅ
-๊ฐ๋ ํผ๋ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ํน์ Message ์ฒ๋ฆฌ๊ฐ 5์ด๊ฐ ๋๋๋ผ๋ ๊ทธ ์ฌ์ด์ ํฐ์น๊ฐ ์์ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ์๋ฅผ๋ค์ด, for๋ฌธ์ 0๋ถํฐ 4๊น์ง ๋๋ฆฌ๋๋ฐ 2์ด์ฉ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ๋ธ๋กํนํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ์. 5๊ฐ์ Message๋ฅผ ์ฒ๋ฆฌํ๋ ์๊ฐ์ ์ด 10์ด๋ค. ๊ฐ๋งํ ๋๋ฉด ๋ฌธ์ ๊ฐ ์๋ค. ํ์ง๋ง Message๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ ํ๋ฉด์ ๋ ๋ฒ ์ด์ ํฐ์นํ๋ฉด ANR์ด ๋ฐ์ํ๋ค. (์์ ์์ฌ์๋ Message๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋๋ผ ํฐ์น ์ด๋ฒคํธ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋๋ ๊ฒ)
์๋น์ค๋ ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ์์๋ 5์ด ์ด๋ด๋ก Message ์ฒ๋ฆฌ ํ์
-์๋ฅผ ๋ค์ด 50์ด ๋์ BroadcastReceiver์ onReceive()๊ฐ ์คํ๋๊ณ ์์ ๋ ์กํฐ๋นํฐ ํ๋ฉด์ ํฐ์นํ๋ฉด ์ญ์ ANR ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ๋ ์๋น์ค๋ ์กํฐ๋นํฐ๊ฐ ๋ ์๋ ์ํ๋ฅผ ๊ณ ๋ คํด์, ํ์์์์ 5์ด๋ผ๊ณ ์๊ฐํ๋ ํธ์ด ๋ซ๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ์ ๊ฒฝ์ฐ์ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ด ์๋ค๋ฉด ์๋น์ค๋ก ๋๊ฒจ์ ์คํํด์ผ ํ๊ณ , ์๋น์ค์์๋ ๋ค์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋๋ฅผ ์ด์ฉํด์ผ ํ๋ค.