Android WebView 进度卡住10%不动,页面空白,页面无反应,不报错。

困扰我两天的问题,终于解决了,

现象:

            页面空白,啥也没有,进度显示10%,不动,没有任何报错,链接放到浏览器正常。

解决办法:

             我遇到是的因为:

 

我是在一个Activity的WebView中监听Js事件回调到原生,原生中再打开一个Activity,这个新的Activity就是我要显示的新内容的WebView,

因为下面的WebView 弹出了一个alert,然后再打开新页面的,好像是由于alert卡住的所有WebView的资源加载,把下面的一个WebView中alert想办法关掉就好了。

WebView加载一些比较复杂的页面时,可能会出现卡顿的情况,这通常是因为页面中包含了大量的 DOM 元素、JavaScript、CSS 文件等导致的。下面是一些可能有用的解决方法: 1. 启用硬件加速:在 AndroidManifest.xml 中为应用程序添加以下代码: ```xml <application android:hardwareAccelerated="true"> ``` 这可以将 WebView 的渲染工作转移到 GPU 上,从而提高性能。 2. 启用缓存:可以通过以下代码启用 WebView 缓存: ```java WebSettings webSettings = webView.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); ``` 这会使 WebView加载页面时首先尝试从缓存中加载,如果缓存中没有,才会从网络上加载。这可以减少网络请求的数量,从而提高性能。 3. 减少页面中的 DOM 元素数量:可以通过减少页面中的 DOM 元素数量来减少 WebView 的渲染工作量。可以尝试通过压缩和合并 CSS、JavaScript 文件来减少请求的数量。 4. 使用 WebViewClient 和 WebChromeClient:可以使用 WebViewClient 和 WebChromeClient 来监视 WebView加载过程,并在必要时进行优化。以下是示例代码: ```java webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // 在页面开始加载时执行一些操作 } @Override public void onPageFinished(WebView view, String url) { // 在页面加载完成时执行一些操作 } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { // 在加载页面时发生错误时执行一些操作 } }); webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { // 在页面加载进度发生变化时执行一些操作 } }); ``` 通过使用 WebViewClient 和 WebChromeClient,您可以监视页面加载进度,并在必要时执行一些操作,例如显示进度条、显示错误消息等。 5. 使用跨进程 WebViewAndroid 7.0 及更高版本支持跨进程 WebView,这可以将 WebView 的渲染工作转移到单独的进程中,从而提高性能。要使用跨进程 WebView,您需要在 AndroidManifest.xml 中添加以下代码: ```xml <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true" /> ``` 然后在应用程序的代码中使用以下代码创建 WebView: ```java WebView webView = WebViewCompat.createCrossProcessWebView(context); ``` 这将创建一个跨进程 WebView,您可以在其中加载页面。请注意,跨进程 WebView 可能会增加一些额外的开销,因此应该根据实际需求进行使用。 希望这些解决方法能够帮助您解决 WebView 卡顿的问题。如果仍然存在问题,请提供更多详细信息,以便我能够更好地帮助您。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值