Mozilla PDF 在三星设备上速度极慢

Mozilla PDF extremely slow on Samsung Devices

我有一个应用程序,我在其中使用 Mozilla PDF 查看 PDF。

Mozilla PDF 使用网络视图加载 PDF。

PDF文件很大,实际上都是图片。

该应用程序运行良好,但 PDF 在所有三星设备上加载速度极慢。该应用程序在其他设备上运行良好,但在三星上太慢了,它真的没用。

我对网络视图有以下设置:

    settings.setJavaScriptEnabled(true);
    settings.setRenderPriority(RenderPriority.HIGH);
    settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

我也设置了一个WebChromeClient。

有谁知道我为什么会遇到这个问题?而且只在三星设备上? 任何解决方法?任何帮助将不胜感激。

这是一个 WebView 设置,使用 PDF.js 显示 PDF。它在所有设备(至少 运行ning 至少 API 19)上工作正常,包括旧的微型即将死亡的三星。

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setSupportMultipleWindows(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
    {
        webView.getSettings().setAllowFileAccessFromFileURLs(true);
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
    {
        webView.getSettings().setMediaPlaybackRequiresUserGesture(true);
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    }
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setAllowContentAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.setWebViewClient(new WebViewClient());
    webView.setWebChromeClient(new WebChromeClient());

    // should enable pinch to zoom....
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(false);
    String webViewUrl;
    try
    {
    /*
    Try encoding the PDF file URL. I think i’ve read that this helps with
    load/rendering speed?
    */
        webViewUrl = "file:///android_asset/pdfjs/web/viewer.html?file=" + URLEncoder
                .encode(pdfUri.toString(), "UTF-8");
    }
    catch (UnsupportedEncodingException e)
    {
        // It works without encoding it (at least in my case) so just display it with the string as is.
        Log.e("Error encoding PDF file URL, will display without encoding.", e);
        webViewUrl = "file:///android_asset/pdfjs/web/viewer.html?file=" + pdfUri.toString();
    }
    webView.loadUrl(webViewUrl);

不确定这是否有帮助,但我想我会 post 一个完整的 WebView 设置来支持 PDF.js,我从来没有 运行 加快速度问题。祝你好运。

注意:在您的应用程序清单中打开硬件加速可能也是个好主意。这仅适用于 API 14 及更高版本。现在这应该不是问题(如果是,我的心会为你而死)。

<application
        android:name="com.pdfjs.webview.app.McAwesome"
        //...
        android:hardwareAccelerated="true">       
</application>