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

标签 android pdf webview mozilla

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

Mozilla PDF 使用 WebView 加载 PDF。

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

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

我对 WebView 有以下设置:

    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 .它在所有设备(至少运行 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);

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

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

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

关于android - Mozilla PDF 在三星设备上速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30278508/

相关文章:

android - 如何在Android中为圆形ImageView添加阴影效果?

android - 使用 Guice for Android 有意义吗

Android GLSL 优化

ios - 使用 ios webView 播放视频时不调用 didEndDisplayingCell

android - 为什么 css 属性在 android webview 中发生变化

android - 使用 Opencv 从 Android 中的 CameraGLSurfaceView 拍照

google-chrome - Chrome 在从 PDF 复制并粘贴到 TinyMCE 的文本中添加了不间断空格

java - 将 Freemarker 转换为 PDF

iOS - 显示带有签名的 PDF

android - 如何防止 React Native Android Webview 在后台运行 Youtube?