from now on (after I/O 2015), you can also use new GcmNetworkManager. How to use it and how it works is described here – https://developers.google.com/cloud-messaging/network-manager
It does a lot cool stuff like it persists your tasks trough reboots. On Lolipop it uses JobScheduler, on pre-Lolipop it uses it’s own implementation.
EDIT:
An example code on how to use it : https://github.com/jacktech24/gcmnetworkmanager-android-example