Scheduling background jobs on Android is a headache. Not only has Google introduced quite a few APIs over the years, but they’ve also changed their behavior. It’s difficult as a developer to pick the correct framework and to implement all necessary classes properly. In order to use all features from newer APIs and to support older devices at the same time, you need to write a lot of boilerplate code.
We at Evernote faced the same challenges. Internally, we created a unified job library to solve all the pain points and after a long testing period we released android-job as open source two years ago. Since then the library’s popularity has grown. Today it’s being used by Twitter, Dropbox, Pocket, the New York Times and, of course, Evernote. The first version of the library helped to deal with the two power saving modes Doze and App Standby in Android Marshmallow. The next release back-ported all features from Android Nougat.
Today we’re happy to publish version 1.2.0 of android-job. The new version makes it easy to handle the new background execution limits, which were added with Android Oreo. All new Android features were back-ported again, so that you don’t have to deal with version checks or any inconsistencies. Your app will work the same on all Android devices back to Android 4.0 (a.k.a. Ice Cream Sandwich).
The list of new capabilities is long, but noteworthy are the new transient job feature, starting jobs immediately, running specific jobs once a day and the new job requirements like the storage not being low. Upgrading to the new version is straightforward. All API changes compared to version 1.1.0 are documented in the Wiki.
We’re looking forward to your feedback and would love to know how you make use of android-job inside of your app!