android_job-scheduling
Table of Contents
Android Job-Scheduling
Intelligent Job-Scheduling
Eine kleine Übersicht bei Google.
- AlarmManager
- für API < 21 (Android 5.0)
- angeblich nicht robust
- JobScheduler
- für API ab 21 (Android 5.0), mit Compat Paket auch auf älteren Geräten möglich
- Firebase JobDispatcher
- auch für API < 21 (Android 5.0)
- basiert auf Google Play Services
- d.h. App muss im Play Store sein
- aber angeblich auch ohne Play Store möglich
- angeblich sehr robust
- soll auch auf Android 8.0 funktionieren, wo andere Möglichkeiten praktisch nicht garantiert sind
- SyncAdapter
- Additional facilities (AbstractThreadedSyncAdapter)
Bibliotheken
JobSchedulerCompat
https://github.com/Doist/JobSchedulerCompat
Bibliothek, um abhängig vom API Level und der Verfügbarkeit der Google Play Dienste, den bestmöglichen Scheduler zu verwenden.
Zitat:
For each job, the best possible scheduler is used:
- JobScheduler (API 21 and above)
- GcmNetworkManager (API 20 and below, if Google Play Services is available)
- AlarmManager (API 20 and below, if Google Play Services is unavailable)
Vorteile:
- API ist kompatibel zu JobScheduler
Android Job by Evernote
https://github.com/evernote/android-job
A utility library for Android to run jobs delayed in the background. Depending on the Android version either the JobScheduler, GcmNetworkManager or AlarmManager is getting used.
Vorteile:
- Von Evernote
- gut gepflegt
- breite Benutzerbasis
Nachteile:
- hat ein eigenes Interface, welches inkompatibel zu JobScheduler ist
Fazit
https://stackoverflow.com/questions/42963494/job-scheduler-vs-background-service → siehe Antwort von CommonsWare
Kurzfassung:
- die einzige Möglichkeit einen Job periodisch auszuführen, wenn das Gerät im Doze-Mode ist, ist GCM (aka Firebase Cloud Messaging) zu verwenden
- das gilt für Android 6 und insbesondere für Android 7, wo “partial Doze Mode” eingeführt wurde
- ab Android 5 kann man JobScheduler verwenden
- auf Android < 5 kann man auch AlarmManager verwenden
android_job-scheduling.txt · Last modified: by 127.0.0.1
