๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ - CountDownTimer ์‚ฌ์šฉ๋ฐฉ๋ฒ• ๋ณธ๋ฌธ

๐Ÿค–Android

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ - CountDownTimer ์‚ฌ์šฉ๋ฐฉ๋ฒ•

๋ฃจ๋ฆฌ์•ผใ…‘ 2023. 12. 24. 10:08
๋ฐ˜์‘ํ˜•

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

 

1. CountDownTimer ๊ฐ์ฒด ์ƒ์„ฑ

CountDownTimer ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.
onTick ๋ฉ”์„œ๋“œ๋Š” ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ ,
onFinish ๋ฉ”์„œ๋“œ๋Š” ํƒ€์ด๋จธ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•œ๋‹ค.

 

2. start ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

CountDownTimer ๊ฐ์ฒด์˜ start() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํƒ€์ด๋จธ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

new CountDownTimer(60000, 1000) { // 60์ดˆ(60000 ๋ฐ€๋ฆฌ์ดˆ), 1์ดˆ๋งˆ๋‹ค ๊ฐฑ์‹ (1000 ๋ฐ€๋ฆฌ์ดˆ)
    public void onTick(long millisUntilFinished) {
        // ๋งค ์ดˆ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ
        // millisUntilFinished ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋‚จ์€ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
        long secondsRemaining = millisUntilFinished / 1000;
        // ๋‚จ์€ ์‹œ๊ฐ„์„ UI์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    }

    public void onFinish() {
        // ํƒ€์ด๋จธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ
        // ์—ฌ๊ธฐ์„œ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    }
}.start(); // CountDownTimer ์‹œ์ž‘

์œ„ ์ฝ”๋“œ์—์„œ CountDownTimer ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,
60์ดˆ ๋™์•ˆ(60000 ๋ฐ€๋ฆฌ์ดˆ) ๋งค ์ดˆ๋งˆ๋‹ค(1000 ๋ฐ€๋ฆฌ์ดˆ)
onTick์ด ํ˜ธ์ถœ๋œ๋‹ค.
onTick ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋Š” ๋‚จ์€ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ UI์— ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
onFinish ๋ฉ”์„œ๋“œ๋Š” ํƒ€์ด๋จธ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ˜ธ์ถœ๋œ๋‹ค.

๋ฐ˜์‘ํ˜•