はじめに
皆さん、Worker使っていますか?
Serviceへの風当たりがどんどん強くなる今日この頃ですが、公式でもできる限りWorkerへの置き換えを推奨しているご状況です。
以前にもWorkerの取り扱いについて触れましたが、仕様の変更や何らかの問題が発生した際にすでに起動中のWorkerを止めなければならないケースが発生した場合、単純に処理を消すだけではWorkerは止まりません。
明確に停止する必要がありますので、今回は備忘録的にWorkerの停止方法をまとめておこうと思います。
Workerの停止方法
Workerの停止方法には3通りのやり方があります。
main.kt
val workManager = WorkManager.getInstance(context)
// by id
workManager.cancelWorkById(syncWorker.id)
// by name
workManager.cancelUniqueWork("sync")
// by tag
workManager.cancelAllWorkByTag("syncTag")
以上になります。
注意点として、cancelAllWorkByTagは名前の通り同じタグ名を持つWorkerを全て停止させます。
もしキャンセルしたくないWorkerとタグ名が被ってしまっている場合は使えないのでご注意ください。
上記でキャンセルすることで、Workerの状態はCANCELLED状態となり、処理が実行されなくなるというわけです。
ご説明は以上になります。
さいごに
ようやくDovlak配列を運用していく上での解が出ました、次回の記事はDovlak Loverへ捧げたいと思います!