๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Android/Android์˜ ๋ชจ๋“  ๊ฒƒ

๐Ÿ‘‹Android์˜ ๋ชจ๋“  ๊ฒƒ : 1๏ธโƒฃ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…(Service, IntentService, JobintentService , WorkManager)

728x90

https://goni95.tistory.com/173

 

๐Ÿ‘‹Android์— ๋ชจ๋“  ๊ฒƒ ๊ฐœ๋…

๋ชฉ  ์ฐจ ๐Ÿ‘‹Android์— ๋ชจ๋“  ๊ฒƒ : 1๏ธโƒฃAndroid, 2๏ธโƒฃAndroid SDK, 3๏ธโƒฃPlatform Architecture ๐Ÿ‘‹Android์— ๋ชจ๋“  ๊ฒƒ ๊ฐœ๋… : 1๏ธโƒฃApp Manifest, 2๏ธโƒฃAndroid Context, 3๏ธโƒฃApp Components ๐Ÿ‘‹Android์—..

goni95.tistory.com

 

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋ชฉ ๊ทธ๋Œ€๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

 

1๏ธโƒฃ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ ์ „์— ํฌ๊ทธ๋ผ์šด๋“œ์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํฌ๊ทธ๋ผ์šด๋“œ์— ์žˆ๋‹ค๋ผ๋Š” ๊ฒƒ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Activity๊ฐ€ ๋ณด์ด๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ forgound service๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋‹ค ๋“ฑ์œผ๋กœ ๋งŽ์ด๋“ค ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

 

์ƒํƒœ ๊ด€์ ์—์„œ ํฌ๊ทธ๋ผ์šด๋“œ์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๊ณ  ์žˆ์–ด ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ํฌ๊ทธ๋ผ์šด๋“œ / ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜์ง€ ์•Š์•„ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ผ๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ฆ‰, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์ด๋ผ๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š๋Š” ๋’ทํŽธ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ธฐ์ค€๊ณผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” API๋“ค์„ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

์ฆ‰๊ฐ์ ์ธ ์‹คํ–‰์ด ํ•„์š”ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋™์•ˆ ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰ ์ค‘์ธ ๋™์•ˆ ์ž‘์—…์„ ์™„๋ฃŒํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด Coroutine, Rx๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

์ฆ‰๊ฐ์ ์ธ ์‹คํ–‰์ด ํ•„์š”ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ „ํ™˜ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๊ธฐ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋”๋ผ๋„ ์‹คํ–‰์ด ๋ณด์žฅ๋˜๊ณ  ์ง€์†์ ์ธ ์ฒ˜๋ฆฌ(๋™์ž‘์ด)๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด WorkManager(OneTimeWorkRequest)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

์ง€์—ฐ๋˜์–ด, ์ƒํ™ฉ์ด๋‚˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‹คํ–‰ํ•˜๋„๋ก ์˜ˆ์•ฝ๋œ ๊ฒฝ์šฐ๋ผ๋ฉด WorkManager๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

์ง€์—ฐ๋˜์–ด, ์ •ํ™•ํ•œ ์‹œ๊ฐ„์— ์‹คํ–‰ํ•˜๋„๋ก ์˜ˆ์•ฝ๋œ ๊ฒฝ์šฐ๋ผ๋ฉด AlarmManager๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

 

์œ„ ์ฒ˜๋ฆฌ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ WorkManager๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์šฐ์„  ์•ˆ๋“œ๋กœ์ด๋“œ์—์„  ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ง€์›ํ•˜๋Š” API๊ฐ€ WorkManager, AlarmManager๋ฅผ ์ œ์™ธํ•˜๊ณ ๋„ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

 

Service

๊ธฐ๋ณธ์ ์œผ๋กœ UI ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ANR์„ ํ”ผํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•œ ๊ธด ์‹œ๊ฐ„์˜ ์ž‘์—…์„ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†์ด ๋งŽ์ด ๊ฐ€๊ณ  ๊ทธ ๊ณผ์ •์—์„œ ๋ฒ„๊ทธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— bind ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋งŒ์•ฝ ์•กํ‹ฐ๋น„ํ‹ฐ์— bind๋ฅผ ์‹œํ‚ค๋ฉด ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  UI๋ฅผ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Foreground Service๋Š” Notification์˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํฌ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ์ด์ƒ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜, ์„œ๋น„์Šค๊ฐ€ ์ค‘์ง€๋˜์ง€ ์•Š๋Š” ์ด์ƒ Notification์„ ํ•ด์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

Background Service๋Š” Notification์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ์•ฑ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰๋˜๋Š”๋ฐ ์ด๋Ÿฐ ์„œ๋น„์Šค๊ฐ€ ๊ธฐ๊ธฐ์— ๋„ˆ๋ฌด ๋งŽ์ด ์กด์žฌํ•˜๊ฒŒ ๋˜๋ฉด Ram์— ์ƒ์ฃผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ €ํ•˜์™€ ๋ฒ ํ„ฐ๋ฆฌ ์†Œ๋ชจ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„  ์ด๋Ÿฐ ์ด์œ ๋กœ Android 8.0(API 26 : Oreo) ์ด์ƒ์ธ ๋ฒ„์ ผ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ „ํ™˜๋˜๊ณ  ๋ช‡ ๋ถ„ ์ •๋„์˜ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์œ ํœด ์ƒํƒœ๋กœ ๊ฐ„์ฃผ๋˜์–ด ์‹œ์Šคํ…œ์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€์‹œํ‚ต๋‹ˆ๋‹ค.

 

Bound service๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ”์ธ๋”ฉ๋˜๋Š” ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค. ๋ฐ”์šด๋“œ ์„œ๋น„์Šค๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค์— ๊ฑธ์ณ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค๋Š” ๋ฐ”์ธ๋”ฉ๋œ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ์„œ๋น„์Šค๋„ ์†Œ๋ฉธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฌดํ•œํžˆ ์‹คํ–‰๋˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค.

 

IntentService์™€ JobintentService (โŠ™ deprecated)

์œ„์—์„œ ์„œ๋น„์Šค๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ๋งํ–ˆ๋“ฏ์ด ์„œ๋น„์Šค๋Š” ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๊ธ€์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๋Š” IntentService๋ฅผ ์ œ์‹œํ•˜๊ณ , Android 8.0(API 26 : Oreo) ๋ถ€ํ„ฐ ์ง€์›๋œ JobintentService๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

IntentService๋Š” ์ž‘์—…์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค์™€๋Š” ๋˜ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—” ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Android 11(API 30 : Red velevet cake) ๋ถ€ํ„ฐ deprecated ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

JobintentService๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ IntentService์™€ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜๊ณ  BIND_JOB_SERVICE ๊ถŒํ•œ์ด ํ•„์ˆ˜๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ์‹œ๊ฐ„์€ 10๋ถ„์œผ๋กœ ๊ฐ•์ œ์ข…๋ฃŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— 10๋ถ„ ์•ˆ์— ๋™์ž‘ํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” deprecated ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ ๊ฐ€์ด๋“œ์—์„œ ์ž์ฃผ ์–ธ๊ธ‰๋˜์—ˆ๋˜ WorkManager ์ž…๋‹ˆ๋‹ค.

 

WorkManager

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ๊ธฐ๊ธฐ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜์–ด๋„ ์‹คํ–‰์ด ๋ณด์žฅ๋˜๋Š” ์ง€์—ฐ ๊ฐ€๋Šฅํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ง€์—ฐ์ด ๊ฐ€๋Šฅํ•˜๋Š” ์˜๋ฏธ๋Š” ์‹คํ–‰์— ๋Œ€ํ•œ ์˜ˆ์•ฝ

์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ Worker ๊ฐ์ฒด๋กœ ๊ตฌํ˜„ํ•˜๋ฉด Worker๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, Worker๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ WorkRequest๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ•œ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€, ์กฐ๊ฑด(๋„คํŠธ์›Œํฌ/๋ฒ ํ„ฐ๋ฆฌ ์ƒํƒœ์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฑฐ ๋“ฑ)์— ์˜ํ•ด ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ธฐ๋ฅผ ๊นจ์šฐ๋Š” wake_lock์„ ์ž์ฒด ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ๊ถŒํ•œ ์ถ”๊ฐ€๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์€ Oreo ์ดํ•˜์—์„  ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผํ•จ

์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํฌ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์˜ค๋žซ๋™์•ˆ ์ฃฝ์ง€์•Š๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํฌ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋กœ๋„ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

์˜ค๋Š˜ ์•Œ์•„๋ณธ ๊ฒƒ์„ ์ •๋ฆฌํ•˜์ž๋ฉด ํ˜„์žฌ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์€ ์›ฌ๋งŒํ•ด์„  WorkManager๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งˆ๋ฌด๋ฆฌ

๊ฐ„๋‹จํ•˜๊ณ  ์งง์€ ์ž‘์—…/ ๊ธด ์ž‘์—… ๋ชจ๋‘ WorkManager๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ํ•ด์•ผํ•œ๋‹ค๋ฉด WorkManager๋ฅผ ๋จผ์ € ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋‹ค์šด๋กœ๋“œ ์ค‘์ผ ๋•Œ ์•ฑ์„ ์ข…๋ฃŒํ–ˆ๋‹ค๊ฐ€ ์‹คํ–‰ํ•ด๋„ ๋‹ค์šด๋กœ๋“œ ์ƒํƒœ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๊ธด ์ž‘์—…๊ณผ UI ์—…๋ฐ์ดํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” WorkManager๋งŒ์œผ๋กœ๋Š” ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— Bound Service์™€ Foreground Service๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.