小编Uej*_*jji的帖子

Android使用V8而不使用WebView

我正在练习从Java执行javascript.Rhino在桌面上运行得非常好,但是必须回到Android上的(缓慢)解释模式(由于dalvik无法执行Rhino JIT编译的Java字节码).

Android有内置的V8 javascript引擎,通过JNI内部访问,应该提供比Rhino更好的性能; 但是,我能找到访问它的唯一方法是间接通过WebView.

不幸的是,WebView需要一个Context,并且与NPE一起使用空上下文崩溃,所以我甚至无法实例化一个虚拟WebView来执行代码并返回结果.我的练习的本质并不能让我为WebView提供一个Context,所以我希望也许有些东西我会忽略.

其中有几个V8Thread并行运行,所以我的布局中添加一个WebView并隐藏它并不是真的可行(据我所知),因为我不相信单个WebView可以在多个线程中执行函数.

private class V8Thread extends Thread
{
    private WebView webView;
    private String source;

    private double pi;
    private int i, j;

    public V8Thread(int i, int j)
    {
        pi = 0.0;
        this.i = i;
        this.j = j;

        source = "";

        try {
            InputStreamReader isReader = new InputStreamReader(assetManager.open("pi.js"));
            int blah = isReader.read();
            while (blah != -1)
            {
                source += (char)blah;
                blah = isReader.read();
            }

            webView = new WebView(null);
            webView.loadData(source, "text/html", "utf-8");
            webView.getSettings().setJavaScriptEnabled(true);
            webView.addJavascriptInterface(this, "V8Thread");
        } catch (IOException …
Run Code Online (Sandbox Code Playgroud)

javascript android v8

45
推荐指数
3
解决办法
2万
查看次数

标签 统计

android ×1

javascript ×1

v8 ×1