繰り返し作業

アプリでは、特定のタスクを定期的に実行しなければならない場合もあります。たとえば、データのバックアップ、アプリでの最新のコンテンツのダウンロード、ログのサーバーへのアップロードといったタスクです。

こうした定期的に実行する必要があるタスクには、PeriodicWorkRequest を使用します。

PeriodicWorkRequest連結することはできません。タスクを連結する必要がある場合は、OneTimeWorkRequest を使用することを検討してください。

以下に、PeriodicWorkRequest の作成方法を示します。

Kotlin

    val constraints = Constraints.Builder()
            .setRequiresCharging(true)
            .build()

    val saveRequest =
    PeriodicWorkRequestBuilder<SaveImageToFileWorker>(1, TimeUnit.HOURS)
        .setConstraints(constraints)
        .build()

    WorkManager.getInstance(myContext)
        .enqueue(saveRequest)

    

Java

    Constraints constraints = new Constraints.Builder()
            .setRequiresCharging(true)
            .build();

    PeriodicWorkRequest saveRequest =
            new PeriodicWorkRequest.Builder(SaveImageFileWorker.class, 1, TimeUnit.HOURS)
                      .setConstraints(constraints)
                      .build();

    WorkManager.getInstance(myContext)
        .enqueue(saveRequest);
    

この例は、繰り返し間隔が 1 時間の定期的な作業リクエストを示しています。

繰り返し間隔は、繰り返しの間の最小時間として定義されます。Worker の正確な実行タイミングは、作業リクエストで使用する制約とシステムで実行される最適化に左右されます。

この例の PeriodicWorkRequest では、デバイスが接続されている必要もあります。この例では、定義されている繰り返し間隔の 1 時間が過ぎても、PeriodicWorkRequest はデバイスが接続されている場合にのみ実行されます。

PeriodicWorkRequest のステータスは、OneTimeWorkRequest と同じ方法で監視できます。詳しくは、作業の監視をご覧ください。