#1 ์ด์ ๊ธ
[Android] WorkManager - ๊ธฐ์ด
#1 ์ด์ ๊ธ [Android] WorkManager - ๊ฐ์#1 WorkManager๋ '์ง์ฐ ๊ฐ๋ฅํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ '์ ๊ด๋ฆฌ์ WorkManager๋ฅผ ์ฌ์ฉํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ - Kotlin | Android DevelopersAndroid์๋ ๋ณด์ฅ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ํ ๋ค
kenel.tistory.com
์ ๊ฒ์๊ธ์ ์์ฑ๋ ์ฑ์ ์ผ๋ถ ์์ ํด์, ๋ณต์์ Worker๊ฐ ์์๋ฅผ ์งํค๋ฉฐ ์คํ๋๊ฒ ๋ง๋ค์ด๋ณธ๋ค.
#2 Work Chaining
์๋ฒ์ ์ด๋ฏธ์ง๋ฅผ ์ ์กํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค๋ฉด, ๋จผ์ ํด๋น ์ด๋ฏธ์ง๋ฅผ filteringํ๊ณ , compressํ๊ณ , uploadํด์ผ ํ๋ค. ์ด ์ผ๋ จ์ ์์ ๋ค์ List ์๋ฃ๊ตฌ์กฐ์ฒ๋ผ ์์๊ฐ ์กด์ฌํ๋ฉฐ, ์ด๋ ๊ฒ ์์๊ฐ ๋ถ์ฌ๋ ์์ ์ ์งํฉ์ ๋ง๋๋ ๊ฒ์ Work Chaining(์ฐ์)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
#3 ์ฝ๋ ์์
#3-1 OtherWorker.kt ์์ฑ
...
class OtherWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
...
}
UploadWorker.kt์ ํ์ผ ์ด๋ฆ ๋ฐ ํด๋์ค ์ด๋ฆ์ ์ ์ธํ๊ณ ๋ชจ๋ ๋์ผํ Worker ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
#3-2 AnotherWorker.kt ์์ฑ
...
class AnotherWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
...
}
๋ง์ฐฌ๊ฐ์ง๋ก, UploadWorker.kt์ ํ์ผ ์ด๋ฆ ๋ฐ ํด๋์ค ์ด๋ฆ์ ์ ์ธํ๊ณ ๋ชจ๋ ๋์ผํ Worker ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
#3-3 MainActivity - setOneTimeWorkRequest()
...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
}
private fun setOneTimeWorkRequest() {
// WorkRequest ๊ฐ์ฒด ๋ง๋ค๊ธฐ
val uploadRequest = OneTimeWorkRequest
.Builder(UploadWorker::class.java)
.build()
val otherWorker = OneTimeWorkRequest
.Builder(OtherWorker::class.java)
.build()
val anotherWorker = OneTimeWorkRequest
.Builder(AnotherWorker::class.java)
.build()
// WorkManager ๊ฐ์ฒด์ ์์
ํ(Job queue)์ WorkRequest ๋ฑ๋ก
workManager
.beginWith(otherWorker)
.then(anotherWorker)
.then(uploadRequest)
.enqueue()
// WorkInfo๋ ์์
์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด.
// WorkManager.getWorkInfoByIdLiveData()๋ LiveData<WorkInfo>๋ฅผ ๋ฐํ.
...
}
private fun setPeriodicWorkRequest() {
...
}
}
#3-4 MainActivity - setOneTimeWorkRequest()
...
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
}
private fun setOneTimeWorkRequest() {
...
}
private fun setPeriodicWorkRequest() {
// 'Worker ์ฒด์ธ ๊ฐ์'์ฉ Worker ๋ง๋ค๊ธฐ
val chainInitiationWorker = PeriodicWorkRequest
.Builder(ChainInitiationWorker::class.java, 15, TimeUnit.MINUTES) // ์๋๋ก์ด๋์์ ํ์ฉํ๋ PeriodicWorkRequest์ ์ต์ ์ฃผ๊ธฐ๋ 15๋ถ์ด๋ค.
.build()
// WorkManager ๊ฐ์ฒด์ ์์
ํ(Job queue)์ WorkRequest ๋ฑ๋ก
workManager.enqueue(chainInitiationWorker)
// WorkInfo๋ ์์
์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด.
// WorkManager.getWorkInfoByIdLiveData()๋ LiveData<WorkInfo>๋ฅผ ๋ฐํ.
...
}
}
PeriodicWorkRequest์์๋ Work Chaining์ ํ ์ ์๋ค. Work Chaining ๋๋ฌธ์ ์คํ ์ฃผ๊ธฐ์ ํ์ด๋ฐ์ด ์ด๊ธ๋๊ณ , ์ด์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋๊ธฐํ๋๋ผ ๊ทธ ๋ค์ ์ฃผ๊ธฐ๊ฐ ๋์์๋ฒ๋ฆฌ๊ณ ๊ฒฐ๊ตญ ์์ ์ ์ค๋ณต ์คํ์ด ์ผ๊ธฐ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ ์ ์ธ ๊ตฌํ์ด ๋งํ์๋ค. ํ์ง๋ง, ์ด๋ฅผ ์ฐํํ ์ ์๋ค. ๋ฐ๋ก Worker ํด๋์ค ํ๋๋ฅผ PeriodicWorkRequest์ ๋ฃ๊ณ , ํด๋น Worker ํด๋์ค ๋ด๋ถ์์ Work Chaining์ ํ๋ ๊ฒ์ด๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด์.
#3-5 ChainInitiationWorker.kt
...
class ChainInitiationWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
try {
val workManager = WorkManager.getInstance(applicationContext)
// WorkRequest ๊ฐ์ฒด ๋ง๋ค๊ธฐ
val downloadRequest = OneTimeWorkRequest
.Builder(DownloadWorker::class.java)
.build()
val otherWorker = OneTimeWorkRequest
.Builder(OtherWorker::class.java)
.build()
val anotherWorker = OneTimeWorkRequest
.Builder(AnotherWorker::class.java)
.build()
Log.i(...)
workManager
.beginWith(otherWorker)
.then(anotherWorker)
.then(downloadRequest)
.enqueue()
Log.i(...)
return Result.success()
} catch (e: Exception) {
return Result.failure()
}
}
private fun getNowTime(): String {
...
}
}
UploadWorker.kt์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ , ๊ฑฐ๊ธฐ์ WorkRequest ๊ฐ์ฒด ์์ฑ ๋ฐ WorkManager์ ์์ ํ์ ๋ฑ๋กํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
#4 ์๋ ํ์ธ
#4-1 'One Time Request' ๋ฒํผ์ ํด๋ฆญํ์ ๋์ ๋ก๊ทธ ๋ฉ์์ง
(MainActivity) UploadWorker's state: BLOCKED
(OtherWorker) Started at 2024/06/17 10:09:03
(OtherWorker) Progress: 0/100
(OtherWorker) Progress: 1/100
(OtherWorker) Progress: 2/100
(OtherWorker) Progress: 3/100
(OtherWorker) Progress: 4/100
(OtherWorker) Progress: 5/100
(OtherWorker) Progress: 6/100
(OtherWorker) Progress: 7/100
(OtherWorker) Progress: 8/100
(OtherWorker) Progress: 9/100
(OtherWorker) Progress: 10/100
(OtherWorker) Progress: 11/100
(OtherWorker) Progress: 12/100
(OtherWorker) Progress: 13/100
(OtherWorker) Progress: 14/100
(OtherWorker) Progress: 15/100
(OtherWorker) Progress: 16/100
(OtherWorker) Progress: 17/100
(OtherWorker) Progress: 18/100
(OtherWorker) Progress: 19/100
(OtherWorker) Progress: 20/100
(OtherWorker) Progress: 21/100
(OtherWorker) Progress: 22/100
(OtherWorker) Progress: 23/100
(OtherWorker) Progress: 24/100
(OtherWorker) Progress: 25/100
(OtherWorker) Progress: 26/100
(OtherWorker) Progress: 27/100
(OtherWorker) Progress: 28/100
(OtherWorker) Progress: 29/100
(OtherWorker) Progress: 30/100
(OtherWorker) Progress: 31/100
(OtherWorker) Progress: 32/100
(OtherWorker) Progress: 33/100
(OtherWorker) Progress: 34/100
(OtherWorker) Progress: 35/100
(OtherWorker) Progress: 36/100
(OtherWorker) Progress: 37/100
(OtherWorker) Progress: 38/100
(OtherWorker) Progress: 39/100
(OtherWorker) Progress: 40/100
(OtherWorker) Progress: 41/100
(OtherWorker) Progress: 42/100
(OtherWorker) Progress: 43/100
(OtherWorker) Progress: 44/100
(OtherWorker) Progress: 45/100
(OtherWorker) Progress: 46/100
(OtherWorker) Progress: 47/100
(OtherWorker) Progress: 48/100
(OtherWorker) Progress: 49/100
(OtherWorker) Progress: 50/100
(OtherWorker) Progress: 51/100
(OtherWorker) Progress: 52/100
(OtherWorker) Progress: 53/100
(OtherWorker) Progress: 54/100
(OtherWorker) Progress: 55/100
(OtherWorker) Progress: 56/100
(OtherWorker) Progress: 57/100
(OtherWorker) Progress: 58/100
(OtherWorker) Progress: 59/100
(OtherWorker) Progress: 60/100
(OtherWorker) Progress: 61/100
(OtherWorker) Progress: 62/100
(OtherWorker) Progress: 63/100
(OtherWorker) Progress: 64/100
(OtherWorker) Progress: 65/100
(OtherWorker) Progress: 66/100
(OtherWorker) Progress: 67/100
(OtherWorker) Progress: 68/100
(OtherWorker) Progress: 69/100
(OtherWorker) Progress: 70/100
(OtherWorker) Progress: 71/100
(OtherWorker) Progress: 72/100
(OtherWorker) Progress: 73/100
(OtherWorker) Progress: 74/100
(OtherWorker) Progress: 75/100
(OtherWorker) Progress: 76/100
(OtherWorker) Progress: 77/100
(OtherWorker) Progress: 78/100
(OtherWorker) Progress: 79/100
(OtherWorker) Progress: 80/100
(OtherWorker) Progress: 81/100
(OtherWorker) Progress: 82/100
(OtherWorker) Progress: 83/100
(OtherWorker) Progress: 84/100
(OtherWorker) Progress: 85/100
(OtherWorker) Progress: 86/100
(OtherWorker) Progress: 87/100
(OtherWorker) Progress: 88/100
(OtherWorker) Progress: 89/100
(OtherWorker) Progress: 90/100
(OtherWorker) Progress: 91/100
(OtherWorker) Progress: 92/100
(OtherWorker) Progress: 93/100
(OtherWorker) Progress: 94/100
(OtherWorker) Progress: 95/100
(OtherWorker) Progress: 96/100
(OtherWorker) Progress: 97/100
(OtherWorker) Progress: 98/100
(OtherWorker) Progress: 99/100
(OtherWorker) Progress: 100/100
(OtherWorker) Finished at 2024/06/17 10:09:03
(AnotherWorker) Started at 2024/06/17 10:09:03
(AnotherWorker) Progress: 0/100
(AnotherWorker) Progress: 1/100
(AnotherWorker) Progress: 2/100
(AnotherWorker) Progress: 3/100
(AnotherWorker) Progress: 4/100
(AnotherWorker) Progress: 5/100
(AnotherWorker) Progress: 6/100
(AnotherWorker) Progress: 7/100
(AnotherWorker) Progress: 8/100
(AnotherWorker) Progress: 9/100
(AnotherWorker) Progress: 10/100
(AnotherWorker) Progress: 11/100
(AnotherWorker) Progress: 12/100
(AnotherWorker) Progress: 13/100
(AnotherWorker) Progress: 14/100
(AnotherWorker) Progress: 15/100
(AnotherWorker) Progress: 16/100
(AnotherWorker) Progress: 17/100
(AnotherWorker) Progress: 18/100
(AnotherWorker) Progress: 19/100
(AnotherWorker) Progress: 20/100
(AnotherWorker) Progress: 21/100
(AnotherWorker) Progress: 22/100
(AnotherWorker) Progress: 23/100
(AnotherWorker) Progress: 24/100
(AnotherWorker) Progress: 25/100
(AnotherWorker) Progress: 26/100
(AnotherWorker) Progress: 27/100
(AnotherWorker) Progress: 28/100
(AnotherWorker) Progress: 29/100
(AnotherWorker) Progress: 30/100
(AnotherWorker) Progress: 31/100
(AnotherWorker) Progress: 32/100
(AnotherWorker) Progress: 33/100
(AnotherWorker) Progress: 34/100
(AnotherWorker) Progress: 35/100
(AnotherWorker) Progress: 36/100
(AnotherWorker) Progress: 37/100
(AnotherWorker) Progress: 38/100
(AnotherWorker) Progress: 39/100
(AnotherWorker) Progress: 40/100
(AnotherWorker) Progress: 41/100
(AnotherWorker) Progress: 42/100
(AnotherWorker) Progress: 43/100
(AnotherWorker) Progress: 44/100
(AnotherWorker) Progress: 45/100
(AnotherWorker) Progress: 46/100
(AnotherWorker) Progress: 47/100
(AnotherWorker) Progress: 48/100
(AnotherWorker) Progress: 49/100
(AnotherWorker) Progress: 50/100
(AnotherWorker) Progress: 51/100
(AnotherWorker) Progress: 52/100
(AnotherWorker) Progress: 53/100
(AnotherWorker) Progress: 54/100
(AnotherWorker) Progress: 55/100
(AnotherWorker) Progress: 56/100
(AnotherWorker) Progress: 57/100
(AnotherWorker) Progress: 58/100
(AnotherWorker) Progress: 59/100
(AnotherWorker) Progress: 60/100
(AnotherWorker) Progress: 61/100
(AnotherWorker) Progress: 62/100
(AnotherWorker) Progress: 63/100
(AnotherWorker) Progress: 64/100
(AnotherWorker) Progress: 65/100
(AnotherWorker) Progress: 66/100
(AnotherWorker) Progress: 67/100
(AnotherWorker) Progress: 68/100
(AnotherWorker) Progress: 69/100
(AnotherWorker) Progress: 70/100
(AnotherWorker) Progress: 71/100
(AnotherWorker) Progress: 72/100
(AnotherWorker) Progress: 73/100
(AnotherWorker) Progress: 74/100
(AnotherWorker) Progress: 75/100
(AnotherWorker) Progress: 76/100
(AnotherWorker) Progress: 77/100
(AnotherWorker) Progress: 78/100
(AnotherWorker) Progress: 79/100
(AnotherWorker) Progress: 80/100
(AnotherWorker) Progress: 81/100
(AnotherWorker) Progress: 82/100
(AnotherWorker) Progress: 83/100
(AnotherWorker) Progress: 84/100
(AnotherWorker) Progress: 85/100
(AnotherWorker) Progress: 86/100
(AnotherWorker) Progress: 87/100
(AnotherWorker) Progress: 88/100
(AnotherWorker) Progress: 89/100
(AnotherWorker) Progress: 90/100
(AnotherWorker) Progress: 91/100
(AnotherWorker) Progress: 92/100
(AnotherWorker) Progress: 93/100
(AnotherWorker) Progress: 94/100
(AnotherWorker) Progress: 95/100
(AnotherWorker) Progress: 96/100
(AnotherWorker) Progress: 97/100
(AnotherWorker) Progress: 98/100
(AnotherWorker) Progress: 99/100
(AnotherWorker) Progress: 100/100
(AnotherWorker) Finished at 2024/06/17 10:09:03
(MainActivity) UploadWorker's state: ENQUEUED
(UploadWorker) Started at 2024/06/17 10:09:03
(UploadWorker) Progress: 0/100
(UploadWorker) Progress: 1/100
(UploadWorker) Progress: 2/100
(UploadWorker) Progress: 3/100
(UploadWorker) Progress: 4/100
(UploadWorker) Progress: 5/100
(UploadWorker) Progress: 6/100
(UploadWorker) Progress: 7/100
(UploadWorker) Progress: 8/100
(UploadWorker) Progress: 9/100
(UploadWorker) Progress: 10/100
(UploadWorker) Progress: 11/100
(UploadWorker) Progress: 12/100
(MainActivity) UploadWorker's state: RUNNING
(UploadWorker) Progress: 13/100
(UploadWorker) Progress: 14/100
(UploadWorker) Progress: 15/100
(UploadWorker) Progress: 16/100
(UploadWorker) Progress: 17/100
(UploadWorker) Progress: 18/100
(UploadWorker) Progress: 19/100
(UploadWorker) Progress: 20/100
(UploadWorker) Progress: 21/100
(UploadWorker) Progress: 22/100
(UploadWorker) Progress: 23/100
(UploadWorker) Progress: 24/100
(UploadWorker) Progress: 25/100
(UploadWorker) Progress: 26/100
(UploadWorker) Progress: 27/100
(UploadWorker) Progress: 28/100
(UploadWorker) Progress: 29/100
(UploadWorker) Progress: 30/100
(UploadWorker) Progress: 31/100
(UploadWorker) Progress: 32/100
(UploadWorker) Progress: 33/100
(UploadWorker) Progress: 34/100
(UploadWorker) Progress: 35/100
(UploadWorker) Progress: 36/100
(UploadWorker) Progress: 37/100
(UploadWorker) Progress: 38/100
(UploadWorker) Progress: 39/100
(UploadWorker) Progress: 40/100
(UploadWorker) Progress: 41/100
(UploadWorker) Progress: 42/100
(UploadWorker) Progress: 43/100
(UploadWorker) Progress: 44/100
(UploadWorker) Progress: 45/100
(UploadWorker) Progress: 46/100
(UploadWorker) Progress: 47/100
(UploadWorker) Progress: 48/100
(UploadWorker) Progress: 49/100
(UploadWorker) Progress: 50/100
(UploadWorker) Progress: 51/100
(UploadWorker) Progress: 52/100
(UploadWorker) Progress: 53/100
(UploadWorker) Progress: 54/100
(UploadWorker) Progress: 55/100
(UploadWorker) Progress: 56/100
(UploadWorker) Progress: 57/100
(UploadWorker) Progress: 58/100
(UploadWorker) Progress: 59/100
(UploadWorker) Progress: 60/100
(UploadWorker) Progress: 61/100
(UploadWorker) Progress: 62/100
(UploadWorker) Progress: 63/100
(UploadWorker) Progress: 64/100
(UploadWorker) Progress: 65/100
(UploadWorker) Progress: 66/100
(UploadWorker) Progress: 67/100
(UploadWorker) Progress: 68/100
(UploadWorker) Progress: 69/100
(UploadWorker) Progress: 70/100
(UploadWorker) Progress: 71/100
(UploadWorker) Progress: 72/100
(UploadWorker) Progress: 73/100
(UploadWorker) Progress: 74/100
(UploadWorker) Progress: 75/100
(UploadWorker) Progress: 76/100
(UploadWorker) Progress: 77/100
(UploadWorker) Progress: 78/100
(UploadWorker) Progress: 79/100
(UploadWorker) Progress: 80/100
(UploadWorker) Progress: 81/100
(UploadWorker) Progress: 82/100
(UploadWorker) Progress: 83/100
(UploadWorker) Progress: 84/100
(UploadWorker) Progress: 85/100
(UploadWorker) Progress: 86/100
(UploadWorker) Progress: 87/100
(UploadWorker) Progress: 88/100
(UploadWorker) Progress: 89/100
(UploadWorker) Progress: 90/100
(UploadWorker) Progress: 91/100
(UploadWorker) Progress: 92/100
(UploadWorker) Progress: 93/100
(UploadWorker) Progress: 94/100
(UploadWorker) Progress: 95/100
(UploadWorker) Progress: 96/100
(UploadWorker) Progress: 97/100
(UploadWorker) Progress: 98/100
(UploadWorker) Progress: 99/100
(UploadWorker) Progress: 100/100
(UploadWorker) Finished at 2024/06/17 10:09:03
(MainActivity) UploadWorker's state: SUCCEEDED
UploadWorker์ ์ํ๊ฐ BLOCKED์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค. BLOCKED๋ B ์์ ์ ์ ํ ์์ A๊ฐ ์๋ฃ๋์ง ์์์ ์์ ์ A์๊ฒ ์ข ์๋(= ๋ค์ ์๋) B์ ์คํ์ด ์ ์๋ ์ํ๋ฅผ ์๋ฏธํ๋ค (์ด ๊ฒ์๊ธ์ #3 ์ฐธ์กฐ).
#4-2 'Periodic Request' ๋ฒํผ์ ํด๋ฆญํ์ ๋์ ๋ก๊ทธ ๋ฉ์์ง
(MainActivity) ChainInitiationWorker's state: ENQUEUED
(ChainInitiationWorker) Started at 2024/06/17 10:11:41
(ChainInitiationWorker) Finished at 2024/06/17 10:11:41
(MainActivity) ChainInitiationWorker's state: RUNNING
(OtherWorker) Started at 2024/06/17 10:11:41
(OtherWorker) Progress: 0/100
(OtherWorker) Progress: 1/100
(OtherWorker) Progress: 2/100
(OtherWorker) Progress: 3/100
(OtherWorker) Progress: 4/100
(OtherWorker) Progress: 5/100
(OtherWorker) Progress: 6/100
(OtherWorker) Progress: 7/100
(OtherWorker) Progress: 8/100
(OtherWorker) Progress: 9/100
(OtherWorker) Progress: 10/100
(OtherWorker) Progress: 11/100
(MainActivity) ChainInitiationWorker's state: ENQUEUED
(OtherWorker) Progress: 12/100
(OtherWorker) Progress: 13/100
(OtherWorker) Progress: 14/100
(OtherWorker) Progress: 15/100
(OtherWorker) Progress: 16/100
(OtherWorker) Progress: 17/100
(OtherWorker) Progress: 18/100
(OtherWorker) Progress: 19/100
(OtherWorker) Progress: 20/100
(OtherWorker) Progress: 21/100
(OtherWorker) Progress: 22/100
(OtherWorker) Progress: 23/100
(OtherWorker) Progress: 24/100
(OtherWorker) Progress: 25/100
(OtherWorker) Progress: 26/100
(OtherWorker) Progress: 27/100
(OtherWorker) Progress: 28/100
(OtherWorker) Progress: 29/100
(OtherWorker) Progress: 30/100
(OtherWorker) Progress: 31/100
(OtherWorker) Progress: 32/100
(OtherWorker) Progress: 33/100
(OtherWorker) Progress: 34/100
(OtherWorker) Progress: 35/100
(OtherWorker) Progress: 36/100
(OtherWorker) Progress: 37/100
(OtherWorker) Progress: 38/100
(OtherWorker) Progress: 39/100
(OtherWorker) Progress: 40/100
(OtherWorker) Progress: 41/100
(OtherWorker) Progress: 42/100
(OtherWorker) Progress: 43/100
(OtherWorker) Progress: 44/100
(OtherWorker) Progress: 45/100
(OtherWorker) Progress: 46/100
(OtherWorker) Progress: 47/100
(OtherWorker) Progress: 48/100
(OtherWorker) Progress: 49/100
(OtherWorker) Progress: 50/100
(OtherWorker) Progress: 51/100
(OtherWorker) Progress: 52/100
(OtherWorker) Progress: 53/100
(OtherWorker) Progress: 54/100
(OtherWorker) Progress: 55/100
(OtherWorker) Progress: 56/100
(OtherWorker) Progress: 57/100
(OtherWorker) Progress: 58/100
(OtherWorker) Progress: 59/100
(OtherWorker) Progress: 60/100
(OtherWorker) Progress: 61/100
(OtherWorker) Progress: 62/100
(OtherWorker) Progress: 63/100
(OtherWorker) Progress: 64/100
(OtherWorker) Progress: 65/100
(OtherWorker) Progress: 66/100
(OtherWorker) Progress: 67/100
(OtherWorker) Progress: 68/100
(OtherWorker) Progress: 69/100
(OtherWorker) Progress: 70/100
(OtherWorker) Progress: 71/100
(OtherWorker) Progress: 72/100
(OtherWorker) Progress: 73/100
(OtherWorker) Progress: 74/100
(OtherWorker) Progress: 75/100
(OtherWorker) Progress: 76/100
(OtherWorker) Progress: 77/100
(OtherWorker) Progress: 78/100
(OtherWorker) Progress: 79/100
(OtherWorker) Progress: 80/100
(OtherWorker) Progress: 81/100
(OtherWorker) Progress: 82/100
(OtherWorker) Progress: 83/100
(OtherWorker) Progress: 84/100
(OtherWorker) Progress: 85/100
(OtherWorker) Progress: 86/100
(OtherWorker) Progress: 87/100
(OtherWorker) Progress: 88/100
(OtherWorker) Progress: 89/100
(OtherWorker) Progress: 90/100
(OtherWorker) Progress: 91/100
(OtherWorker) Progress: 92/100
(OtherWorker) Progress: 93/100
(OtherWorker) Progress: 94/100
(OtherWorker) Progress: 95/100
(OtherWorker) Progress: 96/100
(OtherWorker) Progress: 97/100
(OtherWorker) Progress: 98/100
(OtherWorker) Progress: 99/100
(OtherWorker) Progress: 100/100
(OtherWorker) Finished at 2024/06/17 10:11:41
(AnotherWorker) Started at 2024/06/17 10:11:41
(AnotherWorker) Progress: 0/100
(AnotherWorker) Progress: 1/100
(AnotherWorker) Progress: 2/100
(AnotherWorker) Progress: 3/100
(AnotherWorker) Progress: 4/100
(AnotherWorker) Progress: 5/100
(AnotherWorker) Progress: 6/100
(AnotherWorker) Progress: 7/100
(AnotherWorker) Progress: 8/100
(AnotherWorker) Progress: 9/100
(AnotherWorker) Progress: 10/100
(AnotherWorker) Progress: 11/100
(AnotherWorker) Progress: 12/100
(AnotherWorker) Progress: 13/100
(AnotherWorker) Progress: 14/100
(AnotherWorker) Progress: 15/100
(AnotherWorker) Progress: 16/100
(AnotherWorker) Progress: 17/100
(AnotherWorker) Progress: 18/100
(AnotherWorker) Progress: 19/100
(AnotherWorker) Progress: 20/100
(AnotherWorker) Progress: 21/100
(AnotherWorker) Progress: 22/100
(AnotherWorker) Progress: 23/100
(AnotherWorker) Progress: 24/100
(AnotherWorker) Progress: 25/100
(AnotherWorker) Progress: 26/100
(AnotherWorker) Progress: 27/100
(AnotherWorker) Progress: 28/100
(AnotherWorker) Progress: 29/100
(AnotherWorker) Progress: 30/100
(AnotherWorker) Progress: 31/100
(AnotherWorker) Progress: 32/100
(AnotherWorker) Progress: 33/100
(AnotherWorker) Progress: 34/100
(AnotherWorker) Progress: 35/100
(AnotherWorker) Progress: 36/100
(AnotherWorker) Progress: 37/100
(AnotherWorker) Progress: 38/100
(AnotherWorker) Progress: 39/100
(AnotherWorker) Progress: 40/100
(AnotherWorker) Progress: 41/100
(AnotherWorker) Progress: 42/100
(AnotherWorker) Progress: 43/100
(AnotherWorker) Progress: 44/100
(AnotherWorker) Progress: 45/100
(AnotherWorker) Progress: 46/100
(AnotherWorker) Progress: 47/100
(AnotherWorker) Progress: 48/100
(AnotherWorker) Progress: 49/100
(AnotherWorker) Progress: 50/100
(AnotherWorker) Progress: 51/100
(AnotherWorker) Progress: 52/100
(AnotherWorker) Progress: 53/100
(AnotherWorker) Progress: 54/100
(AnotherWorker) Progress: 55/100
(AnotherWorker) Progress: 56/100
(AnotherWorker) Progress: 57/100
(AnotherWorker) Progress: 58/100
(AnotherWorker) Progress: 59/100
(AnotherWorker) Progress: 60/100
(AnotherWorker) Progress: 61/100
(AnotherWorker) Progress: 62/100
(AnotherWorker) Progress: 63/100
(AnotherWorker) Progress: 64/100
(AnotherWorker) Progress: 65/100
(AnotherWorker) Progress: 66/100
(AnotherWorker) Progress: 67/100
(AnotherWorker) Progress: 68/100
(AnotherWorker) Progress: 69/100
(AnotherWorker) Progress: 70/100
(AnotherWorker) Progress: 71/100
(AnotherWorker) Progress: 72/100
(AnotherWorker) Progress: 73/100
(AnotherWorker) Progress: 74/100
(AnotherWorker) Progress: 75/100
(AnotherWorker) Progress: 76/100
(AnotherWorker) Progress: 77/100
(AnotherWorker) Progress: 78/100
(AnotherWorker) Progress: 79/100
(AnotherWorker) Progress: 80/100
(AnotherWorker) Progress: 81/100
(AnotherWorker) Progress: 82/100
(AnotherWorker) Progress: 83/100
(AnotherWorker) Progress: 84/100
(AnotherWorker) Progress: 85/100
(AnotherWorker) Progress: 86/100
(AnotherWorker) Progress: 87/100
(AnotherWorker) Progress: 88/100
(AnotherWorker) Progress: 89/100
(AnotherWorker) Progress: 90/100
(AnotherWorker) Progress: 91/100
(AnotherWorker) Progress: 92/100
(AnotherWorker) Progress: 93/100
(AnotherWorker) Progress: 94/100
(AnotherWorker) Progress: 95/100
(AnotherWorker) Progress: 96/100
(AnotherWorker) Progress: 97/100
(AnotherWorker) Progress: 98/100
(AnotherWorker) Progress: 99/100
(AnotherWorker) Progress: 100/100
(AnotherWorker) Finished at 2024/06/17 10:11:41
(DownloadWorker) Started at 2024/06/17 10:11:41
(DownloadWorker) Progress: 0/100
(DownloadWorker) Progress: 1/100
(DownloadWorker) Progress: 2/100
(DownloadWorker) Progress: 3/100
(DownloadWorker) Progress: 4/100
(DownloadWorker) Progress: 5/100
(DownloadWorker) Progress: 6/100
(DownloadWorker) Progress: 7/100
(DownloadWorker) Progress: 8/100
(DownloadWorker) Progress: 9/100
(DownloadWorker) Progress: 10/100
(DownloadWorker) Progress: 11/100
(DownloadWorker) Progress: 12/100
(DownloadWorker) Progress: 13/100
(DownloadWorker) Progress: 14/100
(DownloadWorker) Progress: 15/100
(DownloadWorker) Progress: 16/100
(DownloadWorker) Progress: 17/100
(DownloadWorker) Progress: 18/100
(DownloadWorker) Progress: 19/100
(DownloadWorker) Progress: 20/100
(DownloadWorker) Progress: 21/100
(DownloadWorker) Progress: 22/100
(DownloadWorker) Progress: 23/100
(DownloadWorker) Progress: 24/100
(DownloadWorker) Progress: 25/100
(DownloadWorker) Progress: 26/100
(DownloadWorker) Progress: 27/100
(DownloadWorker) Progress: 28/100
(DownloadWorker) Progress: 29/100
(DownloadWorker) Progress: 30/100
(DownloadWorker) Progress: 31/100
(DownloadWorker) Progress: 32/100
(DownloadWorker) Progress: 33/100
(DownloadWorker) Progress: 34/100
(DownloadWorker) Progress: 35/100
(DownloadWorker) Progress: 36/100
(DownloadWorker) Progress: 37/100
(DownloadWorker) Progress: 38/100
(DownloadWorker) Progress: 39/100
(DownloadWorker) Progress: 40/100
(DownloadWorker) Progress: 41/100
(DownloadWorker) Progress: 42/100
(DownloadWorker) Progress: 43/100
(DownloadWorker) Progress: 44/100
(DownloadWorker) Progress: 45/100
(DownloadWorker) Progress: 46/100
(DownloadWorker) Progress: 47/100
(DownloadWorker) Progress: 48/100
(DownloadWorker) Progress: 49/100
(DownloadWorker) Progress: 50/100
(DownloadWorker) Progress: 51/100
(DownloadWorker) Progress: 52/100
(DownloadWorker) Progress: 53/100
(DownloadWorker) Progress: 54/100
(DownloadWorker) Progress: 55/100
(DownloadWorker) Progress: 56/100
(DownloadWorker) Progress: 57/100
(DownloadWorker) Progress: 58/100
(DownloadWorker) Progress: 59/100
(DownloadWorker) Progress: 60/100
(DownloadWorker) Progress: 61/100
(DownloadWorker) Progress: 62/100
(DownloadWorker) Progress: 63/100
(DownloadWorker) Progress: 64/100
(DownloadWorker) Progress: 65/100
(DownloadWorker) Progress: 66/100
(DownloadWorker) Progress: 67/100
(DownloadWorker) Progress: 68/100
(DownloadWorker) Progress: 69/100
(DownloadWorker) Progress: 70/100
(DownloadWorker) Progress: 71/100
(DownloadWorker) Progress: 72/100
(DownloadWorker) Progress: 73/100
(DownloadWorker) Progress: 74/100
(DownloadWorker) Progress: 75/100
(DownloadWorker) Progress: 76/100
(DownloadWorker) Progress: 77/100
(DownloadWorker) Progress: 78/100
(DownloadWorker) Progress: 79/100
(DownloadWorker) Progress: 80/100
(DownloadWorker) Progress: 81/100
(DownloadWorker) Progress: 82/100
(DownloadWorker) Progress: 83/100
(DownloadWorker) Progress: 84/100
(DownloadWorker) Progress: 85/100
(DownloadWorker) Progress: 86/100
(DownloadWorker) Progress: 87/100
(DownloadWorker) Progress: 88/100
(DownloadWorker) Progress: 89/100
(DownloadWorker) Progress: 90/100
(DownloadWorker) Progress: 91/100
(DownloadWorker) Progress: 92/100
(DownloadWorker) Progress: 93/100
(DownloadWorker) Progress: 94/100
(DownloadWorker) Progress: 95/100
(DownloadWorker) Progress: 96/100
(DownloadWorker) Progress: 97/100
(DownloadWorker) Progress: 98/100
(DownloadWorker) Progress: 99/100
(DownloadWorker) Progress: 100/100
(DownloadWorker) Finished at 2024/06/17 10:11:42
์ดํ ์๋ต
ChainInitiationWorker๊ฐ RUNNING ์ํ ํ ๊ต์ฅํ ๋นจ๋ฆฌ ENQUEUED๋ก ์ ํ๋์๋๋ฐ, ์ด๋ ChainInitiationWorker์ ์ค๋ ๋์ ๋ค๋ฅธ ๋ณ๋์ ์ค๋ ๋์์ ChainInitiationWorker ๋ด๋ถ์ WorkRequest๊ฐ ์งํ๋์๊ธฐ ๋๋ฌธ์ผ๋ก ๋ณด์ธ๋ค.
#5 ์์ฝ
Worker๋ฅผ Chainํํจ์ผ๋ก์จ, ๋ ๊ฐ๋ ์ฑ ์ข๊ณ ์ ์ฐํ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ฌ์ฑํ ์ ์๋ค.
#6 ์์ฑ๋ ์ฑ
android-practice/work-manager/ChainingWorkers at master · Kanmanemone/android-practice
Contribute to Kanmanemone/android-practice development by creating an account on GitHub.
github.com
#7 ์ด์ด์ง๋ ๊ธ
[Android] WorkManager - ๋ณ๋ ฌ Chaining
#1 ์ด์ ๊ธ [Android] WorkManager - ์์ ์ฐ์ํ๊ธฐ(Chaining)#1 ์ด์ ๊ธ [Android] WorkManager - ๊ธฐ์ด#1 ์ด์ ๊ธ [Android] WorkManager - ๊ฐ์#1 WorkManager๋ '์ง์ฐ ๊ฐ๋ฅํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ '์ ๊ด๋ฆฌ์ WorkManager๋ฅผ ์ฌ์ฉํ
kenel.tistory.com
๋ณธ ๊ฒ์๊ธ์ด Worker๋ฅผ '์ง๋ ฌ'๋ก ์ฐ๊ฒฐํ ๊ฒ์ด๋ผ๋ฉด, ์ด์ด์ง๋ ๊ธ์์๋ Worker๋ฅผ '๋ณ๋ ฌ'๋ก๋ ์ฐ๊ฒฐํด๋ณธ๋ค.
'๊นจ์ ๊ฐ๋ ๐ > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] Dagger2 - ๊ธฐ์ด (0) | 2024.06.24 |
---|---|
[Android] WorkManager - ๋ณ๋ ฌ Chaining (0) | 2024.06.17 |
[Android] WorkManager - ์ ์ฝ ์กฐ๊ฑด (Constraints) (0) | 2024.06.17 |
[Android] WorkManager - ์ธ์ ์ ๋ฌ ๋ฐ ๋ฐ์ดํฐ ๋ฐํ (0) | 2024.06.17 |
[Android] WorkManager - enqueueUniqueWork() (0) | 2024.06.17 |