Из-за ограничений фоновой службы мы реализовали наше приложение с помощью WorkManager
и заменили AsyncTask
. Приложение поддерживает режим прямой загрузки, поэтому мы храним необходимые SharedPreferences
в зашифрованном хранилище устройства. Приложение работало нормально до внедрения WorkManager, но теперь происходит сбой после перезагрузки устройства. Логкат:
java.lang.IllegalStateException: SharedPreferences in credential encrypted storage are not available until after user is unlocked
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:387)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:372)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
at androidx.work.impl.utils.Preferences.getSharedPreferences(Unknown Source:12)
at androidx.work.impl.utils.Preferences.needsReschedule(Unknown Source:0)
setNeedsReschedule
at androidx.work.impl.utils.ForceStopRunnable.shouldRescheduleWorkers(Unknown Source:6)
at androidx.work.impl.utils.ForceStopRunnable.run(Unknown Source:18)
at androidx.work.impl.utils.SerialExecutor$Task.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Мы предоставляем контекст защищенного хранилища устройства при инициализации WorkManager: ContextCompat.createDeviceProtectedStorageContext(appContext);
Пожалуйста, помогите, как с этим справиться.