Мое приложение для отправки SMS имеет довольно стандартный цикл для перебора списка телефонных номеров и использования SMSManager.sendMultipartTextMessage().
BroadcastReceiver (по одному на часть сообщения с уникальным PendingIntent, получатель фильтрует это намерение) используется для записи любых сбоев.
Я не могу воссоздать проблему для себя, но я знаю, что некоторые из моих пользователей получают несколько общих сбоев (SmsManager.RESULT_ERROR_GENERIC_FAILURE).
Я считаю, что их телефоны не в состоянии обрабатывать многочисленные SMS-сообщения, приходящие на высокой скорости. Даже если я добавлю задержку (не очень хорошее решение) в свою петлю, я думаю, что SMS все равно каким-то образом накапливаются в телефоне, а затем внезапно переполняются, вызывая общие сбои.
Я знаю, что многие другие сталкиваются с этой проблемой, но я не видел никаких полезных решений, кроме очень простого случая (отсутствие потоков ошибок и т. д.).
Я думал о бесконечном цикле, который ждал, пока каждый BroadcastReceiver.onReceive() не сообщит об этом (эффективный прослушиватель), но я ненавижу идею бесконечного цикла (и пытаюсь управлять им для всех потоков ошибок).
Любые идеи о том, как я могу гарантировать, что SMS обрабатывается по одному (дросселирование)?