ViewPager+Fragment+WebView 中loadUrl失效。

大崔527 2016-01-26 07:09:38
全部身家都在这了。求解!

我在本地存了N个HTML页面。用标题所述加载这些页面并可以左右滑动。
目前出现的问题就是在某个情况下WebView loadUrl 失效,代码走到loadUrl就没了,中断掉了好像是,并且不会进WebViewClient和WebViewChromClient的任何回调。
日志没有任何错误打印。

重点是我退出该Acitivity,重新进入,依然无法加载。只有退出app重新进入之后才行。
到StackOverflow上边看有说是硬件加速的问题,但依照那种方法改过依然不行。真心求助!

以下是无法加载后。我再次加载的时候打出的所有日志。

01-26 19:08:08.061 11582-11582/com.xxxx D/WebView: WebView<init>
01-26 19:08:08.066 11582-11582/com.xxxx W/art: Attempt to remove local handle scope entry from IRT, ignoring
01-26 19:08:08.069 11582-11582/com.xxxx D/AwPasswordHandler: getInstance, sInstance = com.android.org.chromium.android_webview.AwPasswordHandler@217836f7
01-26 19:08:08.069 11582-11582/com.xxxx W/chromium: [WARNING:password_handler.cc(26)] create-->contents = 0x42424800, delegate = 0x42452200
01-26 19:08:08.070 11582-11582/com.xxxx W/chromium: [WARNING:password_handler.cc(34)] attaching to web_contents
01-26 19:08:08.070 11582-11582/com.xxxx W/AwContents: onDetachedFromWindow called when already detached. Ignoring
01-26 19:08:08.074 11582-11582/com.xxxx D/ContentSettingsAdapter: setBuiltInZoomControls=true
01-26 19:08:08.075 11582-11582/com.xxxx D/ContentSettingsAdapter: setLoadWithOverviewMode=true
01-26 19:08:08.077 11582-11582/com.xxxx D/ContentSettingsAdapter: setJavaScriptEnabled=true
01-26 19:08:08.080 11582-11582/com.xxxx D/ContentSettingsAdapter: setDomStorageEnabled=true
01-26 19:08:08.083 11582-11582/com.xxxx D/ContentSettingsAdapter: setSupportMultipleWindows=true
01-26 19:08:08.084 11582-11582/com.xxxx D/WebView: addJavascriptInterface=control
01-26 19:08:08.084 11582-11582/com.xxxx W/art: Attempt to remove local handle scope entry from IRT, ignoring
01-26 19:08:08.084 11582-11582/com.xxxx W/art: Attempt to remove local handle scope entry from IRT, ignoring
01-26 19:08:08.084 11582-11582/com.xxxx D/WebView: loadUrl=file:///storage/sdcard0/qmss/unzip/b464fdbda7eb4dbeb117b6b63a881494/index5/index.html
01-26 19:08:08.104 11582-11582/com.xxxx D/ColorDrawable: Color = -1118482, canvas = android.view.GLES20RecordingCanvas@c8e1f7c, mTintMode = SRC_IN, mTint = null, ColorDrawable = android.graphics.drawable.ColorDrawable@fb9d948
01-26 19:08:08.104 11582-11582/com.xxxx D/ColorDrawable: Color = -5329234, canvas = android.view.GLES20RecordingCanvas@25aaea2, mTintMode = SRC_IN, mTint = null, ColorDrawable = android.graphics.drawable.ColorDrawable@2aac0008
...全文
1053 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
chunlongyuan 2016-09-10
  • 打赏
  • 举报
回复
楼主这个问题解决了没?我也遇到这样的问题 很是苦闷
大崔527 2016-07-21
  • 打赏
  • 举报
回复
引用 12 楼 yyp5258 的回复:
楼主问题咋样了,我这也有一模一样的问题
不好意思刚看见,好长时间不上CSDN了。 我现在已经不维护这个项目了。有一点小思路 你可以看下我16L回复的。不过我没试过,所以不知道会不会解决问题。
大崔527 2016-07-21
  • 打赏
  • 举报
回复
引用 13 楼 tanmengqian 的回复:
楼主问题解决了吗?我这调用loadUrl也是一样的状况,原因应该是多个webView同时使用的原因?
我当时是出现这种情况之后,整个app的webView都不好用了。现在已经不做那个项目了。不过后来是有一些想法。比如如果放在viewPager中 一共三个webView对象应该就够用。不要太多。不过没付诸实现,不知道实际会不会解决这个问题。
大崔527 2016-07-21
  • 打赏
  • 举报
回复
引用 14 楼 liu_dkalan 的回复:
@Override public void onDestroyView() { super.onDestroyView(); /** * 解决二级fragment嵌套的时候,fragment重新创建的时候,外链页面load失败 */ localWebView.stopLoading(); localWebView.removeAllViews(); localWebView.destroy(); localWebView = null; } 两层fragment嵌套的时候,在 fragment的 onDestoyView()方法里面释放你的webView资源,下次加载的时候就不会出现加载失败的情况了!
这个操作我是有的。也就是优化了个加载速度。并没有解决那个问题。
六公子 2016-07-15
  • 打赏
  • 举报
回复
@Override public void onDestroyView() { super.onDestroyView(); /** * 解决二级fragment嵌套的时候,fragment重新创建的时候,外链页面load失败 */ localWebView.stopLoading(); localWebView.removeAllViews(); localWebView.destroy(); localWebView = null; } 两层fragment嵌套的时候,在 fragment的 onDestoyView()方法里面释放你的webView资源,下次加载的时候就不会出现加载失败的情况了!
麦涌 2016-07-06
  • 打赏
  • 举报
回复
楼主问题解决了吗?我这调用loadUrl也是一样的状况,原因应该是多个webView同时使用的原因?
yyp5258 2016-05-30
  • 打赏
  • 举报
回复
楼主问题咋样了,我这也有一模一样的问题
哎,真难 2016-02-01
  • 打赏
  • 举报
回复
引用 10 楼 u013676055 的回复:
[quote=引用 8 楼 heaimnmn 的回复:] 你在哪里配置了webclient
其实主要就是我不知道 什么原因会导致app杀死重新开启前webView全部不好使。 内存泄露会么?但我理解中泄露也就资源没回收,内存越占越多 然后卡 最后OOM。[/quote]应该不会由于你这样的操作而OOM,除非你每次都创建fragment,并在创建的时候创建webview
哎,真难 2016-01-28
  • 打赏
  • 举报
回复
你在哪里配置了webclient
大崔527 2016-01-28
  • 打赏
  • 举报
回复
引用 8 楼 heaimnmn 的回复:
你在哪里配置了webclient
其实主要就是我不知道 什么原因会导致app杀死重新开启前webView全部不好使。 内存泄露会么?但我理解中泄露也就资源没回收,内存越占越多 然后卡 最后OOM。
大崔527 2016-01-28
  • 打赏
  • 举报
回复
引用 8 楼 heaimnmn 的回复:
你在哪里配置了webclient
额,webViewClient写在别处,因为实际只用了onPageFinished,就没贴出来。
爱吃鹌鹑蛋 2016-01-27
  • 打赏
  • 举报
回复
没有错误或许是你的WebView 配置不正确, web页面若有js脚本要允许js实行,若有ajax 要处理,配置正确的缓存模式, 在WebViewClient类onReceivedError等错误处理方法中类打印日志看看
大崔527 2016-01-27
  • 打赏
  • 举报
回复
引用 1 楼 aichidanfan 的回复:
没有错误或许是你的WebView 配置不正确, web页面若有js脚本要允许js实行,若有ajax 要处理,配置正确的缓存模式, 在WebViewClient类onReceivedError等错误处理方法中类打印日志看看
问题就在这了。loadUrl之后没任何反应,日志没有。onReceivedError也不走。我甚至可能的回调 挨个都试过,没一个走的。 而且我基本上是可以正常使用,这个bug是偶发的,但是一旦出现,退出该Activity再次进入依然如此,就是个大白板。关闭app再打开就好了。
大崔527 2016-01-27
  • 打赏
  • 举报
回复
引用 6 楼 heaimnmn 的回复:
不走到webclient,就不回调,debug看看走到loadUrl 的时候会不会继续走下去
这个继续走下去是指写在loadUrl之后的代码么?写在之后的会正常走。 loadUrl源码里边我就不知道了,这个方法是interface,打不上断点。 问了好多,有说是硬件加速的问题,设置之后依然存在这个bug。 较多数说的是OOM之类的问题,说是要单独开一个进程给webView,目前还在尝试,问题是我这放在viewPager里边滑动,N个webView… 目前vivo手机上边比较高发这个bug。 bug出现之后,整个app的webView全部都不好使了。 版主有啥好建议不。 我目前是在Fragment的onDestroyView中释放资源,如下:
parent_webView.removeAllViews();
        mWebView.stopLoading();
        mWebView.removeAllViews();
        mWebView.destroy();
        mWebView.setVisibility(View.GONE);
        parent_webView = null;
        mWebView = null;
不知道还能提供点啥有用的了。比较懵逼现在。感觉很奇葩的bug,居然能让整个app的webView都不能用了。 弄了两天了都。 版主有啥好建议不
哎,真难 2016-01-27
  • 打赏
  • 举报
回复
不走到webclient,就不回调,debug看看走到loadUrl 的时候会不会继续走下去
大崔527 2016-01-27
  • 打赏
  • 举报
回复
引用 4 楼 aichidanfan 的回复:
这样你就只能自己排查了,设置WebView背景和parent的背景看看页面是否正确显示,fragment使用是否正确,把WebView提取出来单独显示,看看网页内容看看ssl是否已处理,设置缓存模式设置为不缓存只从网络上加载,不设置userAgent,试试淘宝,头条等常用的网站。
刚一个新发现。。。只要出了这个bug,我整个app的webView全部不好使了。。加载网页和本地的都不好使了。
爱吃鹌鹑蛋 2016-01-27
  • 打赏
  • 举报
回复
这样你就只能自己排查了,设置WebView背景和parent的背景看看页面是否正确显示,fragment使用是否正确,把WebView提取出来单独显示,看看网页内容看看ssl是否已处理,设置缓存模式设置为不缓存只从网络上加载,不设置userAgent,试试淘宝,头条等常用的网站。
大崔527 2016-01-27
  • 打赏
  • 举报
回复
这个bug目前是测出了大概其复现的办法,就是webView刚调用loadUrl的那一瞬间滑动至下一页(我的ViewPager是用的别人写的那个懒加载,只会留一页,其他都销毁。)。就会复现这个bug,只要bug出现了,关闭Activity再次进入都不行。调用loadurl 没反应。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧