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 believe in open source. That’s why we frequently release and contribute to open source projects like Serge, our continuous localization solution, and Android-Job, an Android library to easily handle background jobs. We’re not only giving back some of our work, but we’re also using a couple of open source projects in our own products. One we rely on heavily is Icepick from Frankie Sardo. Icepick is described as “an
Android provides three different APIs to run tasks in the future. All of them have their benefits and downsides. The AlarmManager’s API has changed over time, so you need to be careful which method you use on which platform. The JobScheduler is only available on Android Lollipop and Marshmallow, whereas the GcmNetworkManager is only available on devices with Google Play preinstalled. There are three options with changing API levels, so