- Fixes to 1.4.3 - Added missing
PendingIntents immutable flags
- Make
PendingIntents immutable, what is required for Target SDK 31, see #600
- Bump libraries to the latest version, this fixes a binary incompatibility with
WorkManager, see #591
- Remove appcompat as dependency, which was accidentally added in 1.4.0.
- Migrate to AndroidX, see #583
- (No changes compared to 1.3.0-rc1)
- Implement an API that uses the
WorkManagerfor scheduling work items - Initialize the job storage on a background thread, see #471
- Restrict usage of internal classes for internal usage only, see #465
- Use a
JobIntentServiceimplementation that doesn't crash, see #255 - Offset the end time when rescheduling an inexact job, see #547
- Offset the end time when rescheduling an inexact job, see #547
- Upgraded WorkManager to 1.0.0, see #561
- Upgraded WorkManager to 1.0.0-alpha11
- Upgraded WorkManager with API incompatible changes, see #539
- Handle crash when rescheduling jobs, see #510
- Upgraded WorkManager
- Find the right tag for the job with
WorkManager, see #509 - Integrate
WorkManagerversion1.0.0-alpha05
- Use synchronous method to query the workmanager statuses, see #464
- Fix rare NPE when
WorkManageris null for some reason, see #477 - Fix rare NPE when
JobStorageis null, see #492 - Fix class loading error for the GCM API, see #487
- Use a
JobIntentServiceimplementation that doesn't crash, see #255
- Remove wrong restriction for
PersistableBundleCompat
- Initialize the job storage on a background thread, see #471
- Restrict usage of internal classes for internal usage only, see #465
- Add a workaround for the internal crash in
JobIntentService, see #255 - Fix RuntimeException with WorkManager, see #464
- Implement an API that uses the
WorkManagerfor scheduling work items
- Make the license in Java files clearer, see #422
- Use own internal monitor for synchronizing access to variables in order to avoid deadlocks when using the library, see #414
- Cleanup jobs in the database if no job creator returns an instance during execution, see #413
- Make sure that the
JobManageris created when canceling jobs, see #442 - Don't crash on Android 4.X with the recent Google Play Services, see #415
- Explain the relation to
WorkManager, see here
- Handle platform bug where querying the network state throws an NPE internally, see #380
- Fix database access on main thread, see #385
- Fix misleading log message for some internal improvements, see #391
- Fix race condition when scheduling a job with
setUpdateCurrent(true)where multiple jobs could have been scheduled, see #396 - Fix bug where a daily job runs twice a day, see #406
- Fix a bug where periodic jobs in the flex support mode weren't properly canceled while the job was running, see #407
- Add
scheduleAsync()to theDailyJobclass for scheduling daily jobs asynchronously to avoid IO operations on the main thread, see #371
- Add an
onCancel()method to get notified when the job is canceled, see #359 - Expose the
meetsRequirements()method to have the option to check all requirements manually, see #349 - Don't close the database automatically after each interaction, but give an option in the
JobConfigclass to revert this behavior, see #344 - Add
scheduleAsync()for scheduling jobs asynchronously to avoid IO operations on the main thread
- Use only the
support-compatinstead of the fullsupport-v4library, see #326 - Use a
ReadWriteLockfor synchronizing the database reads and writes, see #344 - Update the last run time for daily jobs, see #332
- Shift the max execution delay if the requirements are enforced, see #325
- Add option to override the default background executor, see #292
- Don't keep a strong reference to finished jobs to allow freeing memory, see #299
- Allow running a daily job immediately once, this is helpful for testing purposes, see #317
- Allow enforcing requirements for daily jobs, see #313
- Remove the Cat dependency for logging, see 295
- Add
@NonNullannotation toparamparameter, see #321 (thanks for the contribution @Jawnnypoo)
- Extract
JobManager.Configclass intoJobConfigclass to make it possible to change settings before theJobManageris created - Add an option to disable any specific API and not just the GCM API (only useful for testing purposes)
- Remove deprecated methods
- Add the
startNow()method to run a job immediately respecting all constraints in Android O - Remove the persisted parameter, which didn't work reliable, all jobs are persisted anyway
- Remove
startWakefulServicefrom theJobclass,WakefulBroadcastReceiveris now deprecated withJobIntentServiceas the better option - Add feature to make jobs transient and to add a
Bundle, seesetTransientExtras(bundle) - Add new
METEREDnetwork type - Add new requirements battery not low and storage not low
- Add helper job class
DailyJobto make it easier to run jobs once a day, see #223 - Add option in
JobConfigto add a logger - Add option in
JobConfigfor a job ID offset to avoid clashes with other jobs in theJobScheduler - Switch to elapsed real time with the
AlarmManagerto have a consistent behavior with theJobScheduler, see #237
- Handle NPE inside of
JobScheduler - Handle 'Package manager has died' crash
- Save the highest job ID in a pref file so that it isn't lost when no job is in the database anymore (makes debugging easier)
- Fix rare NPE when rescheduling jobs after service has been restarted, see #234
- Fix rescheduled periodic job although it has been canceled pre Android N, see #241
- Fix a race condition when canceling jobs, see #178
- Disable the JobScheduler API if the service is disabled, see #190
- Fix
SQLiteConstraintExceptionwhen rescheduling jobs, because job is already present in the database, see #176 - Improve job result documentation, see #192
- Prevent app ending in a crash loop, see #194
- Fallback to an older API if the
JobScheduleris null on the device - Don't persist jobs with the
JobScheduler, if this device is weird and doesn't have the boot permission - List
support-v4as dependency, because it's required, see #200 - Make
Job.Paramspublic for better test support, see #201 - Allow to suppress the
JobManagerCreateException, seeJobApi.setForceAllowApi14(boolean) - Make SimpleDateFormat thread-local to avoid possible crash, see #208
- Fix a race condition when canceling jobs, see #178
- Make it possible to reuse builder objects, this may fix SQL exceptions, see #176
- Add
JobRequest.getLastRun()returning the time when the job did run the last time, if it was rescheduled or it's a periodic job, see #141 - Fix crash on Android 4.0.3 where
SQLiteDatabasedoesn't implementClosable, see #182 - Updating wording for network type ANY to make it clearer that no specific network state is required, see #185
- Use a copy of the platform DefaultDatabaseErrorHandler. Some manufacturers replace this causing stack overflows, see #184
- Improve logging by providing an option to add a custom logger
- Fix crash when rescheduling jobs, see #164
- Fix wrong returned network type, see #166
- Expose failure count in the
JobRequestclass, see #168 - Don't silently eat
JobScheduler's limit exception - Make
schedule()method idempotent - Add a fallback if removing a job from the database fails for some reason, see #145
- Catch wake lock crashes in all cases, fixes #153
- Use a better execution in parallel with the
AlarmManager. This may prevent a process death. - Use better thread names
- List for quick boot completed broad casts, see #157
- Use a service to reschedule jobs and prevent a too early process death, fixes #142
- Reschedule jobs after an app update occurred or the Google Play Services were updated, see #135
- Use only back-off criteria when rescheduling jobs, see #134
- Expose schedule time of a job
- Add an alternative to register a
JobCreator, if you don't have access to theApplicationclass
- Remove packaged
R.txtfile
- Remove packaged
R.txtfile
- Add test option to override minimum interval and flex for testing purposes
- Fix issue that periodic jobs were accidentally canceled
- Fix issue that periodic jobs were accidentally canceled
- Bump SDK version to 24
- Add option to specify flex parameter for periodic jobs
- Add support for flex parameter with GCM proxy
- Add API 24 proxy with support for flex parameter
- Add a flex support mode for all other APIs
- Add API 19 proxy supporting an execution window
- Add NOT_ROAMING network type
- Adjust minimum interval for periodic jobs
- Add GCM service declaration in library manifest
- Fix crash while acquiring wake lock
- Check boot permission only when persisted flag is set to true
- Fix IllegalArgumentException with GCM API, see #72
- Fix overflow for too large execution windows
- Fix immediately starting jobs with JobScheduler if the execution window is too large
- Create the JobManager in all API services
- Bug fixes
- Make PlatformAlarmReceiver intent explicit, fixes #56
- Delete a job after it has finished, otherwise reschedule if app is crashing while job is running, fixes #55
- Extend Params class with more parameters from the job request, fixes #52
- Cache only 20 finished jobs to free up memory, fixes #57
- Weird bug fixes
- Clean up orphaned jobs after the database was deleted
- Fix "WakeLock under-locked" crash
- Add option to update any preexisting jobs
- Bug fixes
- Add option to attach multiple job creators
- Catch certain exceptions and runtime crashes
- Initial release