[内容]
20181226版本Android版SDK,APP切后台后创建新的Webview ,切回前台后新建Webview视窗高度显示异常,具体高度多少不同页面存在差异,可能为动态页面的初始页面高度。并且此时调用Webview.reload()方法,页面仍旧显示异常。
// 新建Webview的Style
var commonWebviewStyle = {
render: "always",
kernel: "WKWebview", // webview内核
progress: { // 加载进度条
color: "#03a9f4"
},
userSelect: false, // 是否可以长按选择页面文本,
statusColor: "#2196f3",
animationTypeShow: "pop-in"
}
除此之外,对页面添加resume事件后检测Webview.checkRenderedContent({},successCallback, errorCallback),检测回调successCallback, rendered 返回 true,页面显示异常。
这个在20181212版本中相同页面的调用Webview.checkRenderedContent后回调ErrorCallback
document.addEventListener("plusready", function() {
// 切到后台后唤醒,检查当前页面是否渲染成功,不成功重新渲染
document.addEventListener("resume", function() {
var currentWebView = plus.webview.currentWebview();
currentWebView.checkRenderedContent({}, function(e){
console.log("rendered:" + e.rendered);
if (!e.rendered) {
webviewRerender();
}
}, function(e){
webviewRerender();
});
});
)};
function webviewRerender(webview) {
try {
if (!webview) {
webview = plus.webview.currentWebview();
}
// 必须先隐藏,再显示,然后reload,否则无效
webview.hide();
webview.show();
webview.reload();
} catch(e) {}
}
重现步骤
[步骤] 主Webview,延时创建新Webview,延时期间,将APP切到后台,之后再切回前台
[结果] 新建Webview显示异常,checkRenderedContent 回调successCallback 并且rendered 返回true
[期望] 新建Webview正常显示,或checkRenderedContent 回调errorCallback,或者rendered 返回false
[如果语言难以表述清晰,可以拍一个视频或截图,有图有真相]
以下为已打开baidu页面的例子:
前台打开,正常显示:
后台打开,显示不完整:
IDE运行环境说明
[5+SDK] 20181226
[IDE版本号]Android studio 3.0.1
[windows版本号]win7 旗舰版
App运行环境说明
[Android版本号]Android 8.0.0
[手机型号]小米6, 小米6X,小米8SE
碧霜寒冰 (作者)
demo已发,请快速定位问题进行修复
2019-01-03 09:35