前提・実現したいこと
androidのWorkManagerを使用して、アプリ終了後も定期的に処理を行いたい
発生している問題・エラーメッセージ
マルチタスク画面でスワイプしてアプリを終了させると、WorkerManagerの処理が動かなくなる。
※「WorkerManagerはアプリが終了したりデバイスが再起動したりしても確実に実行する必要がある遅延可能なタスク」となっているので、処理継続されると考えています。
該当のソースコード
kotlin
1class WorkerClass(){ 2 companion object { 3 fun scheduledRequest(): UUID { 4 val duration = Duration.between(localTime, 5 val request: OneTimeWorkRequest = OneTimeWorkRequestBuilder<Scheduled>() 6 .setInitialDelay(1, TimeUnit.MINUTES) 7 .build() 8 } 9 } 10} 11 12class Scheduled(appContext: Context, params: WorkerParameters) : CoroutineWorker(appContext, params) { 13 override suspend fun doWork(): Result { 14 いろいろな処理 15 16 WorkManager.getInstance(applicationContext) 17 .getWorkInfoById(WorkerClass.scheduledRequest()) 18 } 19}
Scheduled処理を繰り返すものになります。
実際は、setInitialDelayの値は都度変わるものになっているため、定期実行(PeriodicWorkRequest)は使用できません。
試したこと
アプリを起動したまま、ホームボタンで裏に回すまでは問題なく動作していました。
補足情報(FW/ツールのバージョンなど)
端末:Huawei P10 lite
androidバージョン: 8.0.0
ライブラリ: "androidx.work:work-runtime:2.3.4"
"androidx.work:work-runtime-ktx:2.3.4"
あなたの回答
tips
プレビュー