【问题标题】:Loading process getting delay when load any page in android webview在android webview中加载任何页面时加载过程会延迟
【发布时间】:2021-05-25 16:35:20
【问题描述】:

我正在使用 android,因为我通过 webview 调用链接。现在,问题是,每当我在第二个进度条出现后单击任何按钮或调用该链接的任何页面时,即进度条性能在加载任何内容时都会延迟。

从这个问题中,用户无法知道按钮/链接是否被点击,没有任何进度条标志,因此用户多次点击该按钮/链接。

这是我的MainActivity.java的android代码,

public class MainActivity extends AppCompatActivity {
    WebView webView;
    ProgressBar bar;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bar = (ProgressBar)findViewById(R.id.progressBar2);
        webView = (WebView) findViewById(R.id.webView);

        WebSettings webSettings = webView.getSettings();

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setAppCacheEnabled(true);

        webView.setWebViewClient(new myWebClient());

        webView.loadUrl("http://florro-001-site2.etempurl.com/");
    }

    public class myWebClient extends WebViewClient{

        @Override
        public void onPageFinished(WebView view, String url) {
            bar.setVisibility(View.GONE);
            view.setVisibility(webView.VISIBLE);
            super.onPageFinished(view, url);
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            bar.setVisibility(View.VISIBLE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            boolean overrideUrlLoading = false;
            view.loadUrl(url);
            return true;
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
            webView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

我搜索了很多东西,但没有找到相关的主题。

【问题讨论】:

    标签: android performance webview android-webview progress-bar


    【解决方案1】:

    shouldOverrideUrlLoading 中使用bar.setVisibility(View.VISIBLE); 而不是在onPageStarted 中尝试这样使用

    public class myWebClient extends WebViewClient{
    
        @Override
        public void onPageFinished(WebView view, String url) {
            bar.setVisibility(View.GONE);
            view.setVisibility(webView.VISIBLE);
            super.onPageFinished(view, url);
        }
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
           
        }
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            boolean overrideUrlLoading = false;
            view.loadUrl(url);
            bar.setVisibility(View.VISIBLE);
            return true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多