Ich baue eine Android-Anwendung, die einen Manifest Broadcast Empfänger verwendet, um zu wissen, wenn das Gerät eingesteckt ist. Ich denke Android 5.0 JobScheduler API wäre eine viel bessere Möglichkeit, dies zu tun, aber ich habe eine Frage: Ist es möglich, diese API oder eine ähnliche in früheren Versionen von Android zu verwenden? Wenn es nicht möglich ist, was wäre die beste Option (anstelle eines Manifest-Broadcast-Empfängers)?Android 5.0 JobScheduler API auf früheren Versionen?
Antwort
Firebase JobDispatcher eingeführt wurde.
Dies ersetzt die alte GCM Network Manager-Bibliothek.
Ich denke, Android 5.0 Jobscheduler API eine viel bessere Möglichkeit, dies zu tun
Nun wäre, das hängt davon ab, was „das“ ist. Einfach zu wissen, wann das Gerät angeschlossen ist, ist sinnlos, es sei denn, Sie werden etwas mit diesen Informationen tun, und wir wissen nicht, was Sie im Sinn haben.
Denken Sie daran, dass JobScheduler
nicht unbedingt die Kontrolle gibt, wenn das Gerät angeschlossen ist. Vielmehr verwendet es diese Tatsache, plus Ihre JobInfo
und andere Umweltfaktoren, um festzustellen, wann Sie die Kontrolle geben.
ist es möglich, diese API oder eine ähnliche in früheren Versionen von Android zu verwenden?
Es gibt derzeit keinen Backport von JobScheduler
, der vom Android SDK bereitgestellt wird. Während jemand wahrscheinlich irgendwann einen Backport schreiben wird, ist mir auch keiner von beiden als Open Source bekannt.
Wenn es nicht möglich ist, was wäre die beste Option (anstelle eines Manifest-Broadcast-Empfängers)?
Wieder hängt es davon ab, was "das" wirklich ist. Wenn Sie beispielsweise versuchen, "Ich möchte die Kontrolle immer wieder erhalten, aber nur wenn das Gerät angeschlossen ist", können Sie AlarmManager
verwenden und dann überprüfen, ob das Gerät angeschlossen ist, bevor Sie mit Ihrer Arbeit fortfahren.
Update:
Firebase JobDispatcher wurde unter ersetzen eingeführt.
Update:
In Play Services 7.5 GCM Network Manager eingeführt.
Dies ist die engste Annäherung für einen Backport der JobSchedulers API.
Evant Benutzer auf Github erstellt eine Compat version of the JobScheduler API.
Zum Zeitpunkt nicht Produktion bereit der Entsendung ist, aber es lohnt sich
Eine weitere Möglichkeit zu erwähnen, ist diese Bibliothek: https://github.com/evernote/android-job
Es nutzt die JobScheduler
und GcmNetworkManager
, wenn möglich. Ansonsten fällt es auf die AlarmManager
zurück.Es behandelt auch verschiedene API-Ebenen mit der AlarmManager
richtig. Diese blog post gibt Ihnen einen Überblick.
(PS:. Ich bin der Haupt-Entwickler, der bei Evernote auf diese Bibliothek arbeitete es für unsere Projekte nützlich ist, deshalb wollte ich es hier teilen, wie gut)
toller Job Mann, ich liebe diese Bibliothek. Leider gibt es nicht viel Dokumentation darüber und ich bin oft nicht sicher über die Konfiguration des Jobs. – Nativ
Eigentlich sollte man sich nicht viel um die Konfiguration kümmern. Die Dokumentation auf Github erklärt alles, was benötigt wird. Auch das Erstellen eines aktuellen Jobs ist nicht schwer. Erstellen Sie Ihre Job-Klasse und planen Sie sie mit dem Builder, der einige benutzerfreundliche Parameter bietet. – vRallev
kam in dieser Bibliothek, es nicht versucht, sieht aber gut für das, was Sie wollen: https://github.com/airk000/Trigger
Evernote android-Job könnte allerdings eine bessere Lösung sein :)
- 1. Android L: Kompatibilität mit früheren Android-Versionen
- 2. Android Jobscheduler Ausführung mehrmals
- 3. Kompatibilität von Material Design zu Versionen unter Android 5.0?
- 4. Android JobScheduler setRequiresDeviceIdle
- 5. Fensteranimation überlappt Navigationsleiste auf Android 5.0
- 6. Android Jobscheduler nicht auf Emulator starten
- 7. Ist Guava binär kompatibel mit früheren Versionen?
- 8. Könnte ich mit Android N-Plattform entwickelte Anwendungen auf früheren Versionen von Android OS
- 9. Android JobScheduler onStartJob mehrfach aufgerufen
- 10. Verwendet Firebase JobDispatcher den JobScheduler?
- 11. Webviewclientcrome funktioniert nicht in Android unter 5.0 Versionen
- 12. App Absturz auf Android API weniger als 5.0 (Lollipop)
- 13. Elevation auf Android 5.0 (Lollipop) nicht funktioniert
- 14. Planen von Jobs mit Jobscheduler in Android
- 15. Android JobScheduler - kann keinen dauerhaften Job erstellen
- 16. Android JobScheduler funktioniert immer für 1 Minute
- 17. Android java.lang.IllegalArgumentException: Kein solcher Dienst ComponentInfo JobScheduler
- 18. Android starten JobScheduler zu bestimmten Zeitpunkt
- 19. Sonderbare Problem, wenn in Android 5.0 Image in Android 5.0
- 20. Cordova: weißer Bildschirm bleibt auf Android 5.0 (und höher)
- 21. SyncAdapter vs JobScheduler
- 22. Storyboard Auto-Layout funktioniert wie in früheren Versionen
- 23. Android App Zeitverzögerung auf 5.0+ Geräten
- 24. Geteilte Aktionsleiste auf Android 5.0 (Lollipop)
- 25. PopupWindow überlappt Soft-Tasten auf Android 5.0
- 26. Altbeacon-Bibliothek funktioniert nicht auf Android 5.0
- 27. Aktivität excludeFromRecents funktioniert nicht auf Android 5.0
- 28. Downgrade der Android-API-Version
- 29. TimePicker sieht auf verschiedenen Versionen von Android anders aus
- 30. Rollback auf früheren Master
Thank you! Ich möchte einfach nur etwas arbeiten, während das Telefon auflädt, um den Batterieverbrauch zu reduzieren. Die Arbeit ist in einem IntentService erledigt – fergaral
@ user3194230: Das klingt definitiv nach einem guten Anwendungsfall für 'JobScheduler' (obwohl Sie dafür zu einem' JobService' wechseln müssten). Sie können vielleicht [ACTION_POWER_CONNECTED'] (http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_CONNECTED) in der Zwischenzeit verwenden, obwohl - ich hatte diese Sendung vergessen, als ich meine Antwort schrieb . – CommonsWare
Ja. Im Moment benutze ich einen Manifest BroadcastReceiver, der auf ACTION_POWER_CONNECTED Broadcast wartet. Auf meinem Nexus 5 mit Android 4.4.4 funktioniert es wie erwartet, aber ich habe es nicht auf dem Samsung Galaxy S meines Freundes (mit Android 2.3.6) funktioniert. Ich habe versucht, auf die ACTION_BATTERY_CHANGED-Sendung zu hören, und sie funktioniert sowohl in meinem Telefon als auch in meinem Freund, aber diese Übertragung erfordert, dass meine App die ganze Zeit läuft – fergaral