Status Update
Comments
hu...@gmail.com <hu...@gmail.com> #2
hu...@gmail.com <hu...@gmail.com> #4
hu...@gmail.com <hu...@gmail.com> #5
The release build fails and the following warnings are printed:
22:22:06.567 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.work.NonBlockingWorker { NonBlockingWorker(android.content.Context,androidx.work.WorkerParameters); }', but not the descriptor class 'androidx.work.WorkerParameters'
22:22:06.567 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.work.NonBlockingWorker { void internalInit(android.content.Context,androidx.work.WorkerParameters); }', but not the descriptor class 'androidx.work.WorkerParameters'
22:22:06.567 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.work.Worker { Worker(android.content.Context,androidx.work.WorkerParameters); }', but not the descriptor class 'androidx.work.WorkerParameters'
The app is opensource if you want to run the release build yourself. Here is the branch (WIP):
Please run: ./gradlew --info --debug aCcc34c3Release
ra...@google.com <ra...@google.com> #6
ra...@google.com <ra...@google.com> #7
The release build still fails though. Here is a part of the log output:
23:43:15.760 [ERROR] [system.err] Note: there were 11 duplicate class definitions.
23:43:15.760 [ERROR] [system.err] (
23:43:15.822 [QUIET] [system.out] Initializing...
23:43:15.827 [QUIET] [system.out] Note: the configuration refers to the unknown class 'androidx.work.impl.background.firebase.FirebaseJobScheduler'
23:43:15.845 [QUIET] [system.out] Note: the configuration refers to the unknown class 'androidx.work.WorkParameters'
23:43:15.857 [QUIET] [system.out] Note: the configuration refers to the unknown class 'androidx.work.impl.background.firebase.FirebaseJobScheduler'
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper: can't find referenced class sun.misc.Unsafe
23:43:16.272 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper$1: can't find referenced class sun.misc.Unsafe
23:43:16.273 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper$1: can't find referenced class sun.misc.Unsafe
23:43:16.273 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper$1: can't find referenced class sun.misc.Unsafe
23:43:16.273 [ERROR] [system.err] Warning: androidx.concurrent.futures.AbstractFuture$UnsafeAtomicHelper$1: can't find referenced class sun.misc.Unsafe
23:43:16.285 [ERROR] [system.err] Warning: androidx.work.impl.background.systemjob.SystemJobService: can't find referenced method 'android.net.Network getNetwork()' in library class android.app.job.JobParameters
23:43:16.883 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobService
23:43:16.883 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobScheduler
23:43:16.911 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk8.JDK8PlatformImplementations
23:43:16.911 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE8PlatformImplementations
23:43:16.912 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk7.JDK7PlatformImplementations
23:43:16.912 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE7PlatformImplementations
23:43:16.914 [QUIET] [system.out] Note: kotlin.jvm.internal.Reflection: can't find dynamically referenced class kotlin.reflect.jvm.internal.ReflectionFactoryImpl
23:43:16.944 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class com.android.org.conscrypt.SSLParametersImpl
23:43:16.944 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
23:43:16.944 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform$CloseGuard: can't find dynamically referenced class dalvik.system.CloseGuard
23:43:16.944 [QUIET] [system.out] Note: okhttp3.internal.platform.ConscryptPlatform: can't find dynamically referenced class org.conscrypt.ConscryptEngineSocket
23:43:16.944 [QUIET] [system.out] Note: okhttp3.internal.platform.Platform: can't find dynamically referenced class sun.security.ssl.SSLContextImpl
hu...@gmail.com <hu...@gmail.com> #8
I'm not sure why you are running into the warnings about Unsafe, but you can try using -dontwarn sun.misc.Unsafe in your proguard file to see if it helps. We haven't observed it ourselves.
For what it's worth, one of the notes is referring to WorkParameters still - are you sure it was changed properly?
ra...@google.com <ra...@google.com>
ra...@google.com <ra...@google.com> #9
su...@google.com <su...@google.com> #10
So you saying when I want to migrate my app to targetSdkVersion 26 until November I need to raise the compileSdkVersion to 28 in order to use WorkManager? Using targetSdkVersion 26 with compileSdkVersion 28 won't work?
hu...@gmail.com <hu...@gmail.com> #11
hu...@gmail.com <hu...@gmail.com> #12
Feel free to contact me if you are not able to build my project.
su...@google.com <su...@google.com>
su...@google.com <su...@google.com> #13
hu...@gmail.com <hu...@gmail.com> #14
Branch: androidx-master-dev
commit cee9ab55352f3ad506552afb4753baf8648b4c30
Author: Sumir Kataria <sumir@google.com>
Date: Mon Oct 08 14:20:57 2018
Fix class name in Proguard configuration.
Bug: 116296569
Test: N/A
Change-Id: I3525f9d2f3b06523cbe842b35f97014677879a64
M work/workmanager/proguard-rules.pro
hu...@gmail.com <hu...@gmail.com> #15
su...@google.com <su...@google.com> #16
hu...@gmail.com <hu...@gmail.com> #17
ra...@google.com <ra...@google.com> #19
Just change WorkParameters -> WorkerParameters.
hu...@gmail.com <hu...@gmail.com> #20
Or do you mean that the proguard-rules.pro being shipped with WorkManager 1.0.0-alpha is buggy?
hu...@gmail.com <hu...@gmail.com> #21
ra...@google.com <ra...@google.com>
ne...@gmail.com <ne...@gmail.com> #22
I prepared my test branch according to your recommendations (ProGuard, compileSdkVersion, targetSdkVersion, support libraries) as you can see here:
The release build however still fails:
00:20:09.182 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobService
00:20:09.182 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobScheduler
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk8.JDK8PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE8PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk7.JDK7PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE7PlatformImplementations
00:20:09.212 [QUIET] [system.out] Note: kotlin.jvm.internal.Reflection: can't find dynamically referenced class kotlin.reflect.jvm.internal.ReflectionFactoryImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class com.android.org.conscrypt.SSLParametersImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform$CloseGuard: can't find dynamically referenced class dalvik.system.CloseGuard
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.ConscryptPlatform: can't find dynamically referenced class org.conscrypt.ConscryptEngineSocket
00:20:09.229 [QUIET] [system.out] Note: okhttp3.internal.platform.Platform: can't find dynamically referenced class sun.security.ssl.SSLContextImpl
00:20:09.955 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.core.graphics.drawable.IconCompatParcelizer { android.support.v4.graphics.drawable.IconCompat read(androidx.versionedparcelable.VersionedParcel); }', but not the descriptor class 'androidx.versionedparcelable.VersionedParcel'
00:20:09.955 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.core.graphics.drawable.IconCompatParcelizer { void write(android.support.v4.graphics.drawable.IconCompat,androidx.versionedparcelable.VersionedParcel); }', but not the descriptor class 'androidx.versionedparcelable.VersionedParcel'
su...@google.com <su...@google.com> #23
ra...@google.com <ra...@google.com> #24
ra...@google.com <ra...@google.com> #25
-dontwarn sun.misc.Unsafe
al...@gmail.com <al...@gmail.com> #26
Can you please explain which library (version) introduces the Unsafe class?
jo...@gmail.com <jo...@gmail.com> #27
2018-12-31 01:40:32.701 2947-2977/de.aurora.mggvertretungsplan.debug E/WM-WorkerFactory: Could not instantiate de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker
java.lang.IllegalAccessException: Class java.lang.Class<androidx.work.WorkerFactory> cannot access method void de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker.<init>(android.content.Context, androidx.work.WorkerParameters) of class java.lang.Class<de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker>
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:92)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:191)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:125)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
2018-12-31 01:40:32.701 2947-2977/de.aurora.mggvertretungsplan.debug E/WM-WorkerWrapper: Could not create Worker de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker
My code can be found at
I'd be very grateful for any kind of support.
su...@google.com <su...@google.com> #28
al...@gmail.com <al...@gmail.com> #29
ra...@google.com <ra...@google.com> #30
Also are you changing the default WorkManager Configuration ? Can you please send us a code snippet ?
[Deleted User] <[Deleted User]> #31
mi...@sesma.eu <mi...@sesma.eu> #32
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:2013)
at android.os.Parcel.readException(Parcel.java:1951)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:180)
Device Mi A1 with Android 8.1.0. WorkManager 1.0.0-alpha06
This is the code:
val workers = assets.map { assetModel ->
val data = Data.Builder()
.putString(ASSET_UUID, assetModel.uuid)
.putString(ASSET_URL, assetModel.url)
.putString(ASSET_VERSION, assetModel.version.toString())
.build()
OneTimeWorkRequest.Builder(AssetDownloadWorker::class.java)
.setInputData(data)
.build()
}
val continuation = workManager?.beginUniqueWork(
DOWNLOAD_WORK_NAME + mainUuid,
ExistingWorkPolicy.KEEP,
workers.toList())
su...@google.com <su...@google.com> #33
al...@gmail.com <al...@gmail.com> #34
[Deleted User] <[Deleted User]> #35
We don't know exactly how to reproduce this error but we see in crashlytics that two users are getting this issue lots of times. The date we have about this users and crashes:
User 1, 11 crashes: Android 7.1.1 Nubia NX591J
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1692)
at android.os.Parcel.readException(Parcel.java:1637)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(SystemJobScheduler.java:126)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(SystemJobScheduler.java:95)
at androidx.work.impl.Schedulers.schedule(Schedulers.java:99)
at androidx.work.impl.utils.EnqueueRunnable.scheduleWorkInBackground(EnqueueRunnable.java:114)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:86)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
User 2, 17 crashes: Android 7.0 Asus X008D
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1691)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(SystemJobScheduler.java:126)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(SystemJobScheduler.java:95)
at androidx.work.impl.Schedulers.schedule(Schedulers.java:99)
at androidx.work.impl.utils.EnqueueRunnable.scheduleWorkInBackground(EnqueueRunnable.java:114)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:86)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
ra...@google.com <ra...@google.com> #36
cr...@supercomputo.mx <cr...@supercomputo.mx> #37
This is not still happening on version :1.0.0-alpha09
te...@gmail.com <te...@gmail.com> #38
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1967)
at android.os.Parcel.readException(Parcel.java:1905)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:180)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:44)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(SystemJobScheduler.java:148)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(SystemJobScheduler.java:117)
at androidx.work.impl.Schedulers.schedule(Schedulers.java:99)
at androidx.work.impl.utils.EnqueueRunnable.scheduleWorkInBackground(EnqueueRunnable.java:114)
at androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:86)
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)
te...@gmail.com <te...@gmail.com> #39
class App : MultiDexApplication() {
override fun onCreate() {
super.onCreate()
Job.schedule()
}
}
class Job(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
override fun doWork(): Worker.Result {
Log.d("-------------------Job is done!--------------------")
return Result.SUCCESS
}
companion object {
private const val TAG = "my_job"
fun schedule() {
val workManager = WorkManager.getInstance()
val work = PeriodicWorkRequest.Builder(Job::class.java, 1, DAYS).addTag(TAG).build()
workManager.enqueueUniquePeriodicWork(TAG, KEEP, work)
}
}
}
mi...@sesma.eu <mi...@sesma.eu> #40
te...@gmail.com <te...@gmail.com> #41
so...@gmail.com <so...@gmail.com> #42
ad...@gmail.com <ad...@gmail.com> #43
I'm removing WorkManager from our project and getting back to JobScheduler.
I can't believe that Google is not able to fix a base/core issue in this library for 11 versions straight, it is totally unusable with this bug.
Is there a way we can raise this ticket to someone more competent that is able to solve this problem???
Such a shame Google...
ra...@google.com <ra...@google.com> #44
ad...@gmail.com <ad...@gmail.com> #45
On 50K users using the app (with alpha11 library), we see that around 0.1% (50) of them have these crashes. It only happens on Android version 7 and 8.
We had a bigger crash rate before upgrading to alpha11, but the bug is still happening.
The only traces I have are these from Fabric:
Android 7
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1701)
at android.os.Parcel.readException(Parcel.java:1646)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(Unknown Source:148)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(Unknown Source:117)
at androidx.work.impl.Schedulers.schedule(Unknown Source:99)
at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(Unknown Source:550)
at androidx.work.impl.utils.ForceStopRunnable.run(Unknown Source:74)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
Android 7
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1691)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:158)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:42)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(Unknown Source:148)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(Unknown Source:117)
at androidx.work.impl.Schedulers.schedule(Unknown Source:99)
at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(Unknown Source:550)
at androidx.work.impl.utils.ForceStopRunnable.run(Unknown Source:74)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Android 8
Fatal Exception: java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
at android.os.Parcel.readException(Parcel.java:1975)
at android.os.Parcel.readException(Parcel.java:1913)
at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:180)
at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:44)
at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(Unknown Source:148)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(Unknown Source:117)
at androidx.work.impl.Schedulers.schedule(Unknown Source:99)
at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(Unknown Source:550)
at androidx.work.impl.utils.ForceStopRunnable.run(Unknown Source:74)
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)
It is happening on a wide range of devices (some of them):
Samsung Galaxy S7 (herolte),
Samsung Galaxy S7 (heroltebmc), Android 7.0
Samsung Galaxy Note5 (noblelte), Android 7.0
Samsung Galaxy S6 (zeroflte), Android 7.0
Samsung Galaxy S7 edge (hero2lte), Android 8.0
Motorola Moto G (5th Gen) (cedric), Android 8.1
Motorola Moto G(4) Plus (athene_f), Android 7.0
LGE V20 (elsa), Android 8.0
LGE LG K20 (lv517n), Android 7.0
dream2qltesq, Android 7.0
Huawei 荣耀畅玩 6X (HWBLN-H), Android 7.0
Sony Xperia Z5 (SO-01H), Android 7.0
Sony Xperia XZ Premium (SO-04J), Android 8.0
ra...@google.com <ra...@google.com> #46
You might want to push an update on the next version of your app, where you can cancelAllWork(), and reschedule all the Workers you need.
ad...@gmail.com <ad...@gmail.com> #47
ra...@google.com <ra...@google.com> #48
That way you are guaranteed to start from a clean slate, and then you can reschedule your work. Also, are you using a custom configuration when instantiating WorkManager ?
ad...@gmail.com <ad...@gmail.com> #49
Here is the code:
WorkManager.getInstance().cancelAllWorkByTag(NotificationWorker.TAG);
PeriodicWorkRequest.Builder notificationsWorkBuilder = new PeriodicWorkRequest.Builder(NotificationWorker.class, NOTIFICATIONS_PERIOD, TimeUnit.MILLISECONDS);
notificationsWorkBuilder.addTag(NotificationWorker.TAG);
PeriodicWorkRequest notificationWork = notificationsWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork(NotificationWorker.TAG, ExistingPeriodicWorkPolicy.REPLACE, notificationWork);
ra...@google.com <ra...@google.com> #50
Just to ensure that you are starting from a clean slate I would also try and call
ad...@gmail.com <ad...@gmail.com> #51
ad...@gmail.com <ad...@gmail.com> #52
We recently launched an update that includes "androidx.work:work-runtime:2.0.1", and we used it to schedule all our tasks now, in a satisfactory way. I just want to inform, (as you can see in the images attached below), that this problem keeps happening sporadically.
Keep in mind that the number of users affected in our case is small, since the app has several million active users, but it also starts to be worrisome, since the number of errors generated by each user is high.
The errors mainly occur in Android 6 and 7, and sometimes in 8, but especially in Android 7.
I do not expose implementation details, since the documentation of this SDK has been thoroughly studied, and in case there was a bad implementation, the number of errors would be infinitely greater.
Greetings.
[Deleted User] <[Deleted User]> #53
ra...@google.com <ra...@google.com> #54
This bug report talks about this crash in the 1.x alpha era. So I just want to disambiguate the problem.
nf...@gmail.com <nf...@gmail.com> #55
Total crash count is raised drasticly, here we have stats for 40000 devices with 1.0.1 workmanager version: This issue has 46707 crashes affecting 347 users
su...@google.com <su...@google.com> #56
na...@mercadolibre.com <na...@mercadolibre.com> #57
We're using WorkManager#enqueue(OneTimeWorkRequest), instead of WorkManager#beginUniqueWork(OneTimeWorkRequest).
Upgrading to v2.x as you suggest forces us to migrate to Android X too. On v2.x I didn't see anything related in the changelog to justify the migration to Android X.. how can I be sure that migrating both Android X and work-runtime v2.x is gonna fix our issues?
Currently it's happening only in Android 7 (API 24), mainly in Motorola phones (70% Moto C Plus:
Thank you, regards!
ra...@google.com <ra...@google.com> #58
da...@gmail.com <da...@gmail.com> #59
ju...@gmail.com <ju...@gmail.com> #60
ra...@gmail.com <ra...@gmail.com> #61
Fatal Exception: java.lang.IllegalStateException
JobScheduler 100 job limit exceeded. We count 0 WorkManager jobs in JobScheduler; we have 1 tracked jobs in our DB; our Configuration limit is 20.
androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal (SystemJobScheduler.java:204)
androidx.work.impl.background.systemjob.SystemJobScheduler.schedule (SystemJobScheduler.java:132)
androidx.work.impl.Schedulers.schedule (Schedulers.java:108)
androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable (ForceStopRunnable.java:176)
androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:102)
androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
java.lang.Thread.run (Thread.java:764)
Caused by java.lang.IllegalStateException
Apps may not schedule more than 100 distinct jobs
android.os.Parcel.createException (Parcel.java:1958)
android.os.Parcel.readException (Parcel.java:1918)
android.os.Parcel.readException (Parcel.java:1868)
android.app.job.IJobScheduler$Stub$Proxy.schedule (IJobScheduler.java:184)
android.app.JobSchedulerImpl.schedule (JobSchedulerImpl.java:44)
androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal (SystemJobScheduler.java:186)
androidx.work.impl.background.systemjob.SystemJobScheduler.schedule (SystemJobScheduler.java:132)
androidx.work.impl.Schedulers.schedule (Schedulers.java:108)
androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable (ForceStopRunnable.java:176)
androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:102)
androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
java.lang.Thread.run (Thread.java:764)
ra...@google.com <ra...@google.com> #62
JobScheduler 100 job limit exceeded. We count 0 WorkManager jobs in JobScheduler; we have 1 tracked jobs in our DB; our Configuration limit is 20.
You have other libraries in your app scheduling jobs. This is not WorkManager's fault.
kr...@gmail.com <kr...@gmail.com> #63
In my Samsung Galaxy M30S which recently crashed when checking the rescue log found the same code which is mentioned under more than 100 distinct jobs..... Unfortunately all Samsung service centres asked me to erase 64 GB data and reset phone to resolve. Is there no other solution for the same ?
ap...@gmail.com <ap...@gmail.com> #64
implementation "androidx.work:work-runtime-ktx:2.7.1"
Fatal Exception: java.lang.IllegalStateException JobScheduler 100 job limit exceeded. We count 0 WorkManager jobs in JobScheduler; we have 1 tracked jobs in our DB; our Configuration limit is 20.
Description
Version used: 1.0.0-alpha04
Devices/Android versions reproduced on: AVD Pixel 2 27
Our setup:
`
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:enabled="false"
tools:ignore="ExportedContentProvider" />
`
`
val wmConfig = Configuration
.Builder()
.setMaxSchedulerLimit(95)
.build()
WorkManager.initialize(ctx, wmConfig)
`
It's not always crashes.
We are scheduling multiple jobs chains. Each chain is a tree where we utilize input/outputs, where the last job depends on all the leafs of the tree. We build this tree only once, no recheduling inside Workers.