JobScheduler.schedule has a high cost. If called from main thread, can cause ANR
Issue
Android's docs warns that calling JobScheduler.schedule is taxing on the device.
Note: Scheduling a job can have a high cost, even if it's rescheduling the same job and the job didn't execute, especially on platform versions before version Build.VERSION_CODES.Q. As such, the system may throttle calls to this API if calls are made too frequently in a short amount of time.
They don't specificly note this can cause an ANR but there has been a report of this.
From Android 11 (SDK 30) Oppo F11 running OneSignal-Unity-SDK 2.13.4
"main" prio=5 tid=1 Native
#00 pc 00000000000c6054 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 0000000000082550 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+160)
#00 pc 0000000000054cb8 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+304)
#00 pc 0000000000055d24 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60)
#00 pc 0000000000055a8c /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+188)
#00 pc 000000000004e130 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+312)
#00 pc 000000000012880c /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+316)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (BinderProxy.java:568)
at android.app.job.IJobScheduler$Stub$Proxy.schedule (IJobScheduler.java:304)
at android.app.JobSchedulerImpl.schedule (JobSchedulerImpl.java:47)
at com.onesignal.OneSignalSyncServiceUtils.scheduleSyncServiceAsJob (OneSignalSyncServiceUtils.java:177)
at com.onesignal.OneSignalSyncServiceUtils.scheduleSyncTask (OneSignalSyncServiceUtils.java:125)
at com.onesignal.OneSignalSyncServiceUtils.scheduleLocationUpdateTask (OneSignalSyncServiceUtils.java:70)
at com.onesignal.LocationController.scheduleUpdate (LocationController.java:109)
at com.onesignal.OneSignalSyncServiceUtils.cancelSyncTask (OneSignalSyncServiceUtils.java:80)
at com.onesignal.OneSignal.onAppFocus (OneSignal.java:1318)
at com.onesignal.ActivityLifecycleHandler.handleFocus (ActivityLifecycleHandler.java:216)
at com.onesignal.ActivityLifecycleHandler.onActivityResumed (ActivityLifecycleHandler.java:130)
at com.onesignal.ActivityLifecycleListener.onActivityResumed (ActivityLifecycleListener.java:78)
at android.app.Application.dispatchActivityResumed (Application.java:451)
at android.app.Activity.dispatchActivityResumed (Activity.java:1437)
at android.app.Activity.onResume (Activity.java:1967)
at com.unity3d.player.UnityPlayerActivity.onResume (unavailable)
// Other thread possibly related since they are also interacting with IPCThreadState::talkWithDriver
"Binder:28230_1" prio=5 tid=12 Native
#00 pc 00000000000c6054 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 0000000000082550 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+160)
#00 pc 0000000000054cb8 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+304)
#00 pc 0000000000054e48 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 0000000000055738 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+80)
#00 pc 000000000007bc90 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
#00 pc 000000000001567c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
#00 pc 00000000000a2d74 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 0000000000014f14 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
#00 pc 00000000000db188 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000007a9d0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
"Binder:28230_2" prio=5 tid=13 Native
#00 pc 00000000000c6054 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 0000000000082550 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+160)
#00 pc 0000000000054cb8 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+304)
#00 pc 0000000000054e48 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 0000000000055738 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+80)
#00 pc 000000000007bc90 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
#00 pc 000000000001567c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
#00 pc 00000000000a2d74 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 0000000000014f14 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
#00 pc 00000000000db188 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000007a9d0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Related Issue
The same ANR can also happen on JobScheduler.cancel, even through Android's docs do not warn this has a high cost.
From Android 10 (SDK 29) Realme realme C11 running OneSignal-Unity-SDK 2.13.4
"main" prio=5 tid=1 Native
#00 pc 00000000000d0a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 000000000008beb4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
#00 pc 00000000000597ac /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+260)
#00 pc 000000000005a6d4 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60)
#00 pc 000000000005a470 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+184)
#00 pc 000000000004f0a8 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+232)
#00 pc 000000000014f500 /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+312)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (BinderProxy.java:523)
at android.app.job.IJobScheduler$Stub$Proxy.cancel (IJobScheduler.java:388)
at android.app.JobSchedulerImpl.cancel (JobSchedulerImpl.java:70)
at com.onesignal.OneSignalSyncServiceUtils.cancelSyncTask (OneSignalSyncServiceUtils.java:86)
at com.onesignal.OneSignal.onAppFocus (OneSignal.java:1318)
at com.onesignal.ActivityLifecycleHandler.handleFocus (ActivityLifecycleHandler.java:216)
at com.onesignal.ActivityLifecycleHandler.onActivityResumed (ActivityLifecycleHandler.java:130)
at com.onesignal.ActivityLifecycleListener.onActivityResumed (ActivityLifecycleListener.java:78)
at android.app.Application.dispatchActivityResumed (Application.java:453)
at android.app.Activity.dispatchActivityResumed (Activity.java:1317)
at android.app.Activity.onResume (Activity.java:1856)
at com.unity3d.player.UnityPlayerActivity.onResume (unavailable)
// Other thread possibly related since they are also interacting with IPCThreadState::talkWithDriver
"Binder:16551_1" prio=5 tid=12 Native
#00 pc 00000000000d0a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 000000000008beb4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
#00 pc 00000000000597ac /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+260)
#00 pc 0000000000059988 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 000000000005a154 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+76)
#00 pc 0000000000080710 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
#00 pc 000000000001380c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+284)
#00 pc 00000000000c4854 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 00000000000e5614 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
#00 pc 0000000000085458 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
"Binder:16551_2" prio=5 tid=13 Native
#00 pc 00000000000d0a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 000000000008beb4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
#00 pc 00000000000597ac /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+260)
#00 pc 0000000000059988 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 000000000005a154 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+76)
#00 pc 0000000000080710 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+24)
#00 pc 000000000001380c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+284)
#00 pc 00000000000c4854 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 00000000000e5614 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
#00 pc 0000000000085458 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
"Binder:16551_4" prio=5 tid=4 Native
#00 pc 00000000000d0a94 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 000000000008beb4 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
#00 pc 00000000000597ac /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+260)
Fix
Option 1 - Switch to WorkManager
This could most likely be upgraded to use WorkManager instead of using JobScheduler.
Option 2 - Call JobScheduler.schedule from a different Thread
This one would mostly prevent this ANR but WorkManager might be more ideal as we already use it elsewhere in this code base.
Option 3
There might be other options I have not considered.
Workaround
If you are seeing the specific ANR note above from onResume you can disable OneSignal location to prevent this issue by calling OneSignal.setLocationShared(false). This will turn off OneSignal geotagging until this issue is resolved.
This workaround may not fix the related issue noted above since JobScheduler.cancel can be called for non-location related updates.
We began receiving a distinct ANR (com.onesignal.FocusDelaySyncJobService), which appears to be comparable to the one but lacks sufficient details due to the lack of a stacktrace. However, the number of people affected by this problem has grown over time. Google Console reports that 36.9k people have been affected in the previous 30 days. Sharing the screenshot to provide a clearer sense of the impact.

Hello @jkasten2
I'm not sure why you put the crash task in here. As I'm receiving the ANR in the OS util component, I'm assuming you've attached the task here. I read through the description, but there is no "getName" in our proguard rule and also our issue is not specific to Huawei devices.
But, since you're working on the OS util component, I'm guessing we'll get our fix in a future release (4.6.4 and/or 4.7.0). Through our application(Audiomack), I am sharing the most popular ANR stack which e received over Firebase
1. OSBackgroundSync.java line 140 (com.onesignal.OSBackgroundSync.scheduleSyncServiceAsJob)
main (native): tid=1 systid=13554
#00 pc 0xd69d4 libc.so
#01 pc 0x93664 libc.so
#02 pc 0x529e4 libbinder.so
#03 pc 0x53e18 libbinder.so
#04 pc 0x53b88 libbinder.so
#05 pc 0x4c014 libbinder.so
#06 pc 0x12b6dc libandroid_runtime.so
at android.os.BinderProxy.transactNative(Native method)
at android.os.BinderProxy.transact(BinderProxy.java:605)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:304)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:47)
at com.onesignal.OSBackgroundSync.scheduleSyncServiceAsJob(OSBackgroundSync.java:140)
at com.onesignal.OSBackgroundSync.scheduleBackgroundSyncTask(OSBackgroundSync.java:90)
at com.onesignal.OSFocusDelaySync.scheduleSyncTask(OSFocusDelaySync.java:75)
at com.onesignal.ActivityLifecycleHandler.handleLostFocus(ActivityLifecycleHandler.java:173)
at com.onesignal.ActivityLifecycleHandler.onActivityPaused(ActivityLifecycleHandler.java:95)
at com.onesignal.ActivityLifecycleListener.onActivityPaused(ActivityLifecycleListener.java:97)
at android.app.Application.dispatchActivityPaused(Application.java:485)
at android.app.Activity.dispatchActivityPaused(Activity.java:1449)
at android.app.Activity.onPause(Activity.java:2387)
at com.google.android.gms.ads.AdActivity.onPause(com.google.android.gms:play-services-ads-lite@@20.3.0:4)
at android.app.Activity.performPause(Activity.java:8392)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1510)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5229)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5190)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5141)
at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2309)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8587)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Meanwhile, if you have a workaround other than disabling the location feature, please share it with us.
@raghav2945 I've just started seeing this exact same issue as well... would be nice if the OneSignal guys took a look. Also are you seeing a drop in the ANR using the workaround of disabling the location?
@JurajKuliska Disabling location isn't helping us at all. We disabled it only at the start, but it appears to have no effect.
@raghav2945 FocusDelaySyncJobService was removed in PR #1515 and was released in 4.6.6.
While OSBackgroundSync still exists and is being used for location and un-synced player properties it is no longer being used for reporting focus time (aka playtime). We will leave this ticket open until these are also addressed but this should solve most of the occurrences where OneSignal was causing ANRs though it's usage of android.app.JobSchedulerImpl.schedule.
I'm not sure why you put the crash task in here. As I'm receiving the ANR in the OS util component, I'm assuming you've attached the task here. I read through the description, but there is no "getName" in our proguard rule and also our issue is not specific to Huawei devices.
Sorry for the confusion here, this was a mistake in the other ticket, most likely had it in my clipboard and pasted it by mistake.
@raghav2945
FocusDelaySyncJobServicewas removed in PR #1515 and was released in 4.6.6.While
OSBackgroundSyncstill exists and is being used for location and un-synced player properties it is no longer being used for reporting focus time (aka playtime). We will leave this ticket open until these are also addressed but this should solve most of the occurrences where OneSignal was causing ANRs though it's usage ofandroid.app.JobSchedulerImpl.schedule.I'm not sure why you put the crash task in here. As I'm receiving the ANR in the OS util component, I'm assuming you've attached the task here. I read through the description, but there is no "getName" in our proguard rule and also our issue is not specific to Huawei devices.
Sorry for the confusion here, this was a mistake in the other ticket, most likely had it in my clipboard and pasted it by mistake.
Thank you @jkasten2 for providing an update. And, yes, we have already upgraded the SDK in response to your release, and we have start noticing a reduction in the total number of ANRs.
Seeing a couple of reports for ANRs stemming from JobScheduler.getAllPendingJobs.
Report 1
Reported in Jan 2022
Brand:samsung Model:Galaxy A03s Orientation: Unknown RAM free: Unknown Disk free: Unknown
Operating System Version:Android 11 Orientation: Unknown Rooted:No
main (native): tid=1 systid=15738
#00 pc 0x86f8c libc.so (syscall + 28)
#01 pc 0x1b27a4 libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*) + 148)
#02 pc 0x67e9d0 libart.so (art::GoToRunnable(art::Thread*) + 480)
#03 pc 0x67e7ac libart.so (art::JniMethodEnd(unsigned int, art::Thread*) + 28)
at android.os.BinderProxy.transactNative(Native method)
at android.os.BinderProxy.transact(BinderProxy.java:605)
at android.app.job.IJobScheduler$Stub$Proxy.getAllPendingJobs(IJobScheduler.java:425)
at android.app.JobSchedulerImpl.getAllPendingJobs(JobSchedulerImpl.java:90)
at com.onesignal.OSBackgroundSync.isJobIdRunning(OSBackgroundSync.java:106)
at com.onesignal.OSBackgroundSync.scheduleSyncServiceAsJob(OSBackgroundSync.java:118)
at com.onesignal.OSBackgroundSync.scheduleBackgroundSyncTask(OSBackgroundSync.java:90)
at com.onesignal.OSFocusDelaySync.scheduleSyncTask(OSFocusDelaySync.java:75)
at com.onesignal.ActivityLifecycleHandler.handleLostFocus(ActivityLifecycleHandler.java:173)
at com.onesignal.ActivityLifecycleHandler.onActivityPaused(ActivityLifecycleHandler.java:95)
at com.onesignal.ActivityLifecycleListener.onActivityPaused(ActivityLifecycleListener.java:97)
at android.app.Application.dispatchActivityPaused(Application.java:485)
at android.app.Activity.dispatchActivityPaused(Activity.java:1449)
at android.app.Activity.onPause(Activity.java:2387)
at androidx.fragment.app.FragmentActivity.onPause(FragmentActivity.java:372)
at com.facebook.react.ReactActivity.onPause(ReactActivity.java:50)
at android.app.Activity.performPause(Activity.java:8392)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1510)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:5237)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:5198)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:5149)
at android.app.servertransaction.PauseActivityItem.execute(PauseActivityItem.java:46)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2317)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8595)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Report 2
Android Native SDK 4.7.2 or 4.8.0
Samsung 11 Device
main (native): tid=1 systid=26195
#00 pc 0xc6054 libc.so
#01 pc 0x82550 libc.so
#02 pc 0x54cb8 libbinder.so
#03 pc 0x55d24 libbinder.so
#04 pc 0x55a8c libbinder.so
#05 pc 0x4e130 libbinder.so
#06 pc 0x128824 libandroid_runtime.so
at android.os.BinderProxy.transactNative(Native method)
at android.os.BinderProxy.transact(BinderProxy.java:568)
at android.app.job.IJobScheduler$Stub$Proxy.getAllPendingJobs(IJobScheduler.java:425)
at android.app.JobSchedulerImpl.getAllPendingJobs(JobSchedulerImpl.java:90)
at com.onesignal.OSBackgroundSync.isJobIdRunning(OSBackgroundSync.java:106)
at com.onesignal.OSBackgroundSync.scheduleSyncServiceAsJob(OSBackgroundSync.java:118)
at com.onesignal.OSBackgroundSync.scheduleBackgroundSyncTask(OSBackgroundSync.java:90)
at com.onesignal.OSSyncService.scheduleSyncTask(OSSyncService.java:108)
at com.onesignal.OSSyncService.scheduleLocationUpdateTask(OSSyncService.java:116)
at com.onesignal.LocationController.scheduleUpdate(LocationController.java:127)
at com.onesignal.OSSyncService.cancelSyncTask(OSSyncService.java:123)
at com.onesignal.OneSignal.onAppFocusLogic(OneSignal.java:1439)
at com.onesignal.OneSignal.onAppFocus(OneSignal.java:1413)
at com.onesignal.OSFocusHandler.startOnFocusWork(OSFocusHandler.kt:49)
at com.onesignal.ActivityLifecycleHandler.handleFocus(ActivityLifecycleHandler.java:191)
at com.onesignal.ActivityLifecycleHandler.onActivityResumed(ActivityLifecycleHandler.java:95)
at com.onesignal.ActivityLifecycleListener.onActivityResumed(ActivityLifecycleListener.java:91)
at android.app.Application.dispatchActivityResumed(Application.java:451)
at android.app.Activity.dispatchActivityResumed(Activity.java:1437)
at android.app.Activity.onResume(Activity.java:1967)
at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:410)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
at android.app.Activity.performResume(Activity.java:8294)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4790)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4838)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2334)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:255)
at android.app.ActivityThread.main(ActivityThread.java:8224)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
any update?
OSFocusDelaySync was removed in OneSignal-Android-SDK 4.6.6 with the PR https://github.com/OneSignal/OneSignal-Android-SDK/pull/1515. This used to use an Android JobScheduler and this was replaced with an AndroidX Worker.
Since Google's implementation is different here this may help reduces the occurrences of this ANR.
@filipatbnp Please update to this SDK or newer and report the new stacktrace if you are still seeing this issue.