注意到一个现象,新创建的 webview 在第一次 show 的时候会闪白,除非使用 pop-in 方式显示。测试源代码如下:
flicker-index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>main webview</title>
<script src="js/mui.js"></script>
<script type="text/javascript">
mui.init();
mui.plusReady(function() {
mui('#btn-load')[0].addEventListener('tap', function() {
plus.webview.create('flicker-subview.html', 'flicker-subview', {
hardwareAccelerated: true, // 这个选项对结果没有影响
render: 'always' // 这个选项对结果也没有影响
});
});
});
</script>
</head>
<body style="margin:0px">
<button id="btn-load">load subview</button>
<div style="height:300px; background-color:black; color:white">
验证结论:新创建的 webview 在第一次 show 的时候会闪白,除非使用 pop-in。
</div>
</body>
</html>
flicker-subview.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>sub webview</title>
<script src="js/mui.js"></script>
<script type="text/javascript">
mui.init();
mui.plusReady(function() {
mui('#btn-close')[0].addEventListener('tap', function() {
plus.webview.currentWebview().close();
});
var me = plus.webview.currentWebview();
me.show('none'); // flicker
// me.show('slide-in-right', 300); // flicker
// me.show('pop-in', 300); // no flicker
});
</script>
</head>
<body style="margin:0px">
<button id="btn-close">close me</button>
<div style="height:300px; background-color:black"></div>
</body>
</html>
测试环境为 Genymotion 模拟器 + Android 4.2.2/4.4.4
3***@qq.com
我现在遇到的问题是,A页面我使用的预加载,先显示B页面。在B页面点击按钮,显示A关闭B。这时候在A显示的时候会白屏一会,然后A才会显示出来。
2020-03-03 11:52