Gibt es eine Möglichkeit, einen Hintergrund-Service mit reactive-native auf Android zu erstellen? Ich möchte eine Art Timer, der jede Stunde oder so aufwacht, und startet eine einfache Javascript-Aufgabe.Hintergrund-Service auf reactive-native Android
Antwort
Ja, es kann getan werden.
React native arbeitet über der nativen (java/Objc) zu JS-Brücke mit einem Konzept von "nativen" und JS-Modulen (Module können Methoden haben, die Sie von der "anderen" Seite der Brücke aufrufen können). Das gesamte UI-Zeug ist auf der Brücke aufgebaut (das "native" Hauptmodul, das die Erzeugung von Ansichten behandelt, heißt "UIManager"). Es ist möglich, Bridge direkt zu verwenden. Die einzige Einschränkung besteht darin, dass die Kommunikation asynchron sein muss.
Sie können die JavaScript-Funktion aus dem JAVA-Code aufrufen. Check this link für die Dokumentation.
Ja. Das habe ich beendet. Schade, dass es nicht in der Kern-API enthalten ist. – andri
Hi @andri, könntest du so nett sein, Snippets im Geiste zu teilen? oder besser, wenn Sie ein Repo als Referenz haben. : D – holyxiaoxin
Release v0.36 Unterstützung headless-js, nur Android, für jetzt.
https://facebook.github.io/react-native/docs/headless-js-android.html
Ist es möglich, die Methode eines nativen Moduls in einer kopflosen Aufgabe aufzurufen? Da die react-Bridge nach einiger Zeit unplugged (dösen-Modus) "schläft", scheint der native Anruf von der JS ausstehend zu sein, bis das Gerät wach ist. In meinem Fall möchte ich den nächsten Track einer Playlist (Javascript Seite) spielen, wenn mein Mutterspieler den vorherigen beendet hat. Ich benutze eine Headless-Aufgabe, um den JS zu benachrichtigen, welcher Aufruf "play (nextSong)" von meinem nativen Modul aus versucht. Aber die native Funktion wird erst ausgeführt, wenn ich das Gerät aufwecke. –
Absolut. In der Tat ist es ziemlich einfach, dies vollständig in JS zu erreichen (keine Notwendigkeit, nativen Code zu schreiben) plattformübergreifend mit react native queue und react native background task.
Es gibt einige Einschränkungen. Die Hintergrund-Aufgabe wird nur etwa alle 15 Minuten in kürzesten Intervallen abgefeuert (und das Timing ist nicht garantiert perfekt, wenn es überhaupt gezündet wird - der iOS/Android-Scheduler ist eine Art Black Box, die die Akkulaufzeit betrachtet CPU laden usw., wenn Sie bestimmen, wann eine geplante Aufgabe ausgelöst werden soll). Außerdem ist die Aufgabe auf 30 Sekunden Ausführung beschränkt.
I've written a tutorial on how to set all this up here.
Lassen Sie mich wissen, wenn Sie Schwierigkeiten haben, es in Gang zu bringen.
- 1. android.os.NetworkOnMainThreadException auf Dienststart auf Android
- 2. Hintergrundanimationsbild auf ProgressBar auf Android?
- 3. App läuft auf Android Monitor aber nicht auf Android
- 4. Android manifest Fehler auf Android Studio 1.5.1
- 5. erhalten android: windowSoftInputMode Attribut programmatisch auf Android
- 6. Android DatePicker Dialog nicht auf Android 6
- 7. Android: Vektor hat Unschärfe auf Android 4.4
- 8. Android M Fingerabdruck-Scanner auf Android Emulator
- 9. IPTV auf Android
- 10. CSS Schriften auf Android
- 11. MediaController immer auf Android
- 12. Android - SetBackgroundResource auf Button
- 13. Android Benutzeroberfläche auf xml
- 14. Rubin-Verarbeitung auf Android
- 15. Fotoausrichtung auf Android-Geräten
- 16. Pocket Sphinx auf Android
- 17. sun.security.x509.CertAndKeyGen auf Android
- 18. Threads Grenze auf Android?
- 19. Facebook DeepLinking auf Android
- 20. Genaue Timeouts auf Android
- 21. Audiosynthese auf Android?
- 22. reCAPTCHA auf Android?
- 23. Python + Django auf Android
- 24. Python auf Android
- 25. TextInputLayout Standardfehlerfarbe auf Android
- 26. Zeichnung auf Leinwand (Android)
- 27. JSON-Server auf Android
- 28. Android: SQLite auf Listview
- 29. wie XML auf Android
- 30. Dynamic Branding auf Android
Haben Sie eine Lösung gefunden? – Sriraman
Ich will auch wissen: hast du irgendeine Lösung gefunden? –
Nein, aber ich hatte einen Workaround. Ich erstelle den Hintergrund-Service mit Java, der wiederum einige Javascript-Code mit reactContext.getJSModule (...). Emit ('javascript_event_name', params) Es ist schade, dass es keinen Service direkt in der react-native verfügbar ist API. – andri