У меня есть приложение с SyncAdapter
. В дополнение к обычной синхронизации я запускаю событие USER_READ
, с которым я просто передаю Bundle
в адаптер, не сохраняя его:
Bundle settingsBundle = new Bundle();
settingsBundle.putString(SyncAdapter.USER_READ, uid);
ContentResolver.requestSync(account, authority, settingsBundle);
Это правильно вызовет мою процедуру синхронизации в будущем. Каждый uid
, установленный в Bundle
, запускает свой собственный запуск, и все синхронизируется, как ожидалось.
Если теперь соединение плохое или время ожидания запроса, я установил мягкую ошибку:
syncResult.stats.numIoExceptions += 1;
который заставит запрос повторить позже. Это также прекрасно работает.
Как долго сохраняются эти SyncRequests/Bundles?
В документации указано, что встреча с мягкой ошибкой приведет к экспоненциальному отклонению и что синхронизация будет запущена через некоторое время.
- Будет ли он отменен в какой-то момент? После нескольких мягких ошибок?
- Будет ли он снова установлен в очередь после перезагрузки устройства?
Учитывая, что соединение плохое, и синхронизация несколько раз прерывается с помощью мягких ошибок: я хотел бы знать, достаточно ли просто задать запрос на синхронизацию, или если я должен сам обеспечить некоторую настойчивость, чтобы обеспечить отправку запросов на некоторых точка.