У меня есть служба, которая прослушивает входящие уведомления FCM. Когда такое уведомление получено, я запускаю задание с помощью WorkManager.
Когда одновременно поступает несколько уведомлений, как я могу гарантировать, что одновременно выполняется только одно задание? Задания следует выполнять последовательно. В этом случае я хочу отправить смс, и они не могут быть отправлены одновременно. (Обратите внимание, что я делаю другие вещи, такие как http-запросы, в этом задании до и после отправки sms, поэтому я решил создать для него задание вместо отправки sms прямо из службы.)
public class MyFirebaseMessagingService extends FirebaseMessagingService {
public void onMessageReceived(RemoteMessage remoteMessage) {
//...
OneTimeWorkRequest sendSmsWorker = new OneTimeWorkRequest.Builder(SendSmsWorker.class).build();
WorkManager.getInstance().enqueue(sendSmsWorker);
//...
}
}
Я проверил расширенный раздел в документации WorkManager; в нем упоминаются связанные последовательности, однако они должны быть явно связаны друг с другом (beginWith / then / then / ...).