User Tools

Site Tools


android_job-scheduling

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
android_job-scheduling [2018/02/09 11:01] – [Intelligent Job-Scheduling] kalaschnikowandroid_job-scheduling [2018/04/23 15:57] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Android Job-Scheduling ======
 +
 +===== Intelligent Job-Scheduling =====
 +[[https://developer.android.com/topic/performance/scheduling.html|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)
 +
 +[[https://github.com/googlesamples/android-JobScheduler/|Android JobScheduler Sample]]
 +
 +===== 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 
 +