StartForeground verursacht Probleme mit Cordova

Ich benutze einen Service in meiner Cordova App, die eine startForeground Benachrichtigung im onCreate generiert. Wenn die App über Swipe getötet und wieder gestartet wird, wird das Cordova Device-ready-Event nicht mehr gefeuert. Es scheint, dass das cordova Objekt selbst nicht definiert ist, wenn die App neu gestartet wird. Bekomme ich folgende Fehlermeldung:

E/Web Console(19472): Uncaught TypeError: Object #<Object> has no method 'exec' at file:///android_asset/www/src/jsFile.js:31

  • App nicht Eiscreme Sandwich kompatibel
  • Android Studio Debug für doInBackground Code einer AsyncTask
  • Verwenden Sie Kotlin Extension in android java Klasse
  • @OnClick Array mit optionalen IDs (ButterKnife)
  • Wie programmgesteuert man die Anwendungsdaten programmgesteuert
  • Unterschied zwischen make und build in Android Studio
  • Zeile 31 und folgende:

     cordova.exec(function (r) { if (callback) { callback(r); } }, function (err) { if (callback) { callback(false); } }, "Plugin", "functionName", []); 

    Das Problem tritt nur auf, wenn ich das startForeground in meinem Service verwende, wenn ich diesen Teil des Codes startForeground , ist alles richtig funktioniert. Ich brauche dringend Hilfe zu diesen Fragen:

    • Ist es möglich, Cordova manuell zu starten?
    • Wie man den Service mit startForeground , aber trotzdem das Cordova-Gerät nach dem Töten und dem Neustart der App auslöst

    Bearbeiten:

    Nach zwei schnellen Beispielprojekten, einer in Cordova 3.6 (die Version, die ich für meine eigentliche App verwende) und bei Cordova 5.1 habe ich erkannt, dass das Problem nicht in der neuen Cordova Version auftritt. Allerdings möchte ich nicht wirklich aktualisieren, denn:

    • Berühren Sie niemals ein laufendes System
    • Ich weiß nicht, was nicht mehr in der nie Version arbeiten kann, da ich viele Plugins in meiner App installiert habe.
    • Ich bin faul.

    Jede Idee, was hätte sich von 3.6 auf 5.1 ändern können, die den Fehler gelöst haben und ob ich meinen 3.6 Code entsprechend aktualisieren könnte?

    Edit2:

    Dies ist kein Duplikat dieser Frage . Der DeviceReady-Rückruf wurde in dieser Frage falsch verstanden. Dies ist nicht der Fall in meiner App, und es wäre nicht sinnvoll, nur zu arbeiten, wenn ich nicht startForeground in meinem Service verwenden.

  • Android - Maximale Länge der Logcat-Nachrichten festlegen
  • Wo kann ich ScheduledThreadPoolExecutor, TimerTask oder Handler erstellen und verwenden?
  • Zugriff auf Ressourcen in einem Android-Test-Projekt
  • SetOnItemClickListener VS setOnItemSelectedListener in ListView.
  • Hat Android nicht wirklich wchar_t?
  • So beenden Sie eine Aktivität aus einer anderen Aktivität
  • 2 Solutions collect form web for “StartForeground verursacht Probleme mit Cordova”

    Es scheint, dass Sie ein Problem um Ihre Apps Lebenszyklus. Wenn Sie die App abwischen oder kräftig schließen, wird der App-Prozess beim Neustart getötet, wenn Sie keine abhängigen Objekte oder Variablen im Statusbündel gespeichert haben, werden sie als Null zurückkehren, da die Aktivität davon ausgeht, dass diese Dinge verfügbar sind. Können Sie den Code einfügen, den Sie im onCreate() vermuten Sie das, wo Ihr definierendes Cordova ist.

    Wenn das JS nicht innerhalb des onDeviceReady() Ereignisrückrufs geschrieben wird oder das Cordova WebView neu geladen wird, wenn das Device bereits im "ready" – Zustand ist – in diesem Fall wird nur das Ereignis onDocumentReady() einer anderen Zeit ausgelöst.

    Versuchen Sie, einen Testfall einzurichten, der sich anmeldet, wann das Ereignis ausgelöst wird. Der Unterschied zwischen Device & Document Ready könnte der Täter sein. Ausführliche Protokollierung von JS Events & Logcat vorgeschlagen.

    Es könnte erforderlich sein, die JS-Ereignisse anders zu binden oder Code zwischen ihnen zu verschieben, um die Situation zu verhindern, die zu sein scheint: ein WebView zu laden, wenn das Device "bereit" ist, möglicherweise irgendeine Art von Implementierungsversuch, das funktioniert Gegen das Konzept einer JS App, die innerhalb einer WebView Implementierung läuft? Ohne den kleinsten Code zu sehen (es ist offensichtlich, dass dieses "Beispiel" nicht funktioniert, während es defekte Referenzen gibt), würde ich vermuten, dass der Service bereits läuft, während die App es nicht starten kann.

    Dies könnte ein funktionelles Beispiel dafür sein, was du versuchst zu archivieren.

    Während die aktuelle Version von Cordova ist eher 7.0 als 5.1.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.