- Make
PendingIntent
s 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
WorkManager
for 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
JobIntentService
implementation 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
WorkManager
version1.0.0-alpha05
- Use synchronous method to query the workmanager statuses, see #464
- Fix rare NPE when
WorkManager
is null for some reason, see #477 - Fix rare NPE when
JobStorage
is null, see #492 - Fix class loading error for the GCM API, see #487
- Use a
JobIntentService
implementation 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
WorkManager
for 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
JobManager
is 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 theDailyJob
class 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
JobConfig
class to revert this behavior, see #344 - Add
scheduleAsync()
for scheduling jobs asynchronously to avoid IO operations on the main thread
- Use only the
support-compat
instead of the fullsupport-v4
library, see #326 - Use a
ReadWriteLock
for 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
@NonNull
annotation toparam
parameter, see #321 (thanks for the contribution @Jawnnypoo)
- Extract
JobManager.Config
class intoJobConfig
class to make it possible to change settings before theJobManager
is 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
startWakefulService
from theJob
class,WakefulBroadcastReceiver
is now deprecated withJobIntentService
as the better option - Add feature to make jobs transient and to add a
Bundle
, seesetTransientExtras(bundle)
- Add new
METERED
network type - Add new requirements battery not low and storage not low
- Add helper job class
DailyJob
to make it easier to run jobs once a day, see #223 - Add option in
JobConfig
to add a logger - Add option in
JobConfig
for a job ID offset to avoid clashes with other jobs in theJobScheduler
- Switch to elapsed real time with the
AlarmManager
to 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
SQLiteConstraintException
when 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
JobScheduler
is 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-v4
as dependency, because it's required, see #200 - Make
Job.Params
public 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
SQLiteDatabase
doesn'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
JobRequest
class, 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 theApplication
class
- Remove packaged
R.txt
file
- Remove packaged
R.txt
file
- 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