Ausführen von JavaScript in einem Dienst in Android

8

Ich habe Geschäftslogik, die in JavaScript geschrieben ist, dieser Code wird mit anderen nicht-Android-Apps geteilt.

Was ist der beste Weg, um die Funktionen in diesem Teil von JavaScript aus einem Service in Android zu verwenden.

AFAIK, gibt es 2 Möglichkeiten?

  • V8, das in den Standard-WebView und superfast, keine extra apk aufgebläht ist.
  • Rhino, was ist schwierig, um mit Android loszulegen?

Beim Fokussieren auf V8 / Webview, wenn ich versuche, mit irgendeiner Funktion auf das WebView zuzugreifen, bekomme ich;

%Vor%

Die Warnung ist notiert, es funktioniert jetzt nicht einmal. Wenn ich den webviewclient einstelle, bekomme ich nach dem Laden einer URL nichts.

Meine Frage besteht aus drei Teilen;

1) Hat jemand Erfolg damit gehabt, Javascript in einem Webview ohne UI-Thread auszuführen?

2) Wie bekomme ich Ergebnisse von den Funktionen innerhalb des Javascript, unterstützt die Webview-Schnittstelle "addJavascriptInterface" das Laden eines Parameters und das Zurücksenden an den Java?

3) Wenn einer der oben genannten Punkte nicht möglich ist ... Ich schätze, ich werde Rhino holen, alle Tipps würden mir gefallen, ich habe nur ein paar Blogs gesehen, die sich über Probleme im Zusammenhang mit Android beklagen und sich wundern wenn es eine "go to" -Version für Android gibt, die irgendwo gepflegt wird.

    
Pork 'n' Bunny 08.05.2013, 13:31
quelle

1 Antwort

6

Konnte nichts in Bezug auf V8 von tief unten in einem Service finden.

Wenn ich mit Rhino fertig bin, aber ein Wort der Warnung an alle, die meinen Fußstapfen folgen, ist es unglaublich langsam.

Nehmen Sie einfach das Glas aus der offiziellen neuesten Distribution von Rhino aus Ссылка

js.jar ist was du in der zip brauchst. js-14 ist eine größere Java 1.4 kompatible Version, die du nicht brauchst.

Integration war ein Kinderspiel, einfach das Glas in Ihren Ordner libs Chuck.

Unten ist das Scrapen einer Webseite mit JavaScript (die Daten werden in besser formatiertes json umgewandelt). Mit dem parse.js Skript kam ich aus dem Ordner Assets.

Rhino kommt nicht mit DOM und env.js stürzt mit Stackoverflow-Fehlern ab. Insgesamt würde ich sagen, dass diese Lösung langsam und nicht gut unterstützt wird ...

%Vor%     
Pork 'n' Bunny 10.05.2013, 19:46
quelle