Android Webview Низкая производительность для большой формы - PullRequest
1 голос
/ 22 ноября 2011

Я использую Android WebView для просмотра локального HTML файла.Этот HTML файл содержит около 500 текстовых полей, и когда я пытаюсь что-то ввести в текстовое поле, он не может автоматически отображать символ.Это было показано поздно и очень медленно.

Я использую следующий код:

WebView webview = (WebView) this.findViewById(R.id.appWebView);
webview.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
 //webview.clearHistory();
 //webview.clearFormData();
 //webview.clearCache(true);
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webview.setVerticalScrollBarEnabled(false);
webview.setHorizontalScrollBarEnabled(false);

// disable scroll on touch
webview.setOnTouchListener(new View.OnTouchListener() {
  @Override
   public boolean onTouch(View v, MotionEvent event) {
    if(!AppView.this.origin.equalsIgnoreCase("termsofuse")){
       return (event.getAction() == MotionEvent.ACTION_MOVE);
       }
        return false;
       }
        });

WebSettings webSettings = webview.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setPluginsEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setRenderPriority(RenderPriority.HIGH);

final Activity activity = this;
webview.setWebChromeClient(new WebChromeClient() {
       /*
         public void onProgressChanged(WebView view, int progress) {
         // Activities and WebViews measure progress with different scales.
         // The progress meter will automatically disappear when we reach 100%
         activity.setProgress(progress * 1000);
          }
          */
        });
        webview.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
          }

       @Override
        public void onPageStarted(WebView view, String url,Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
                 if(AppView.this.bgHeigth.equalsIgnoreCase("470px")){
                    view.setInitialScale(155);
                }else{ //420px
                    view.setInitialScale(126);
                }

            }
        });


   webview.loadUrl( "file:///" + Environment.getExternalStorageDirectory() + "/Some/Directory/main.html" );

Есть идеи, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...