我在每个页面的js里面都写了
mui.init({
preloadLimit: 5//预加载窗口数量限制(一旦超出,先进先出)默认不限制
});
预期整个app最多只存在5个预加载窗口
但是似乎不起作用,因为打印出来的预加载窗口信息经常大于5个
我觉得不管preloadLimit是不是全局的,但是也不应该出现大于5个的情况呀,
除非preloadLimit不是全局的,而恰好这个页面的mui.init没有正确的起作用
所以,应该怎么解决这个问题呢?
(function(window, mui, _) {
mui.init({
preloadLimit: 5 //预加载窗口数量限制(一旦超出,先进先出)默认不限制
});
mui.ready(function() {
console.log("map页面ready了");
});
mui.plusReady(function() {
console.log("map页的plus ready了");
mui.preload({
url: "_www/pages/login/login.html"
});
mui.preload({
url: "_www/pages/login/login.html?k=1"
});
mui.preload({
url: "_www/pages/login/login.html?k=2"
});
mui.preload({
url: "_www/pages/login/login.html?k=3"
});
mui.preload({
url: "_www/pages/login/login.html?k=4"
});
var cw = plus.webview.currentWebview();
cw.addEventListener("show", function() {
console.log("map页show了");
var url = "_www/pages/login/login.html?k=" + (+new Date());
console.log(url);
mui.preload({
url: url,
id: url
});
url = "_www/pages/login/login.html?k=" + (+new Date()+1111);
console.log(url);
mui.preload({
url: url,
id: url
});
mui.preload({
url: "_www/pages/login/login.html"
});
mui.preload({
url: "_www/pages/login/login.html?k=1"
});
mui.preload({
url: "_www/pages/login/login.html?k=2"
});
mui.preload({
url: "_www/pages/login/login.html?k=3"
});
mui.preload({
url: "_www/pages/login/login.html?k=4"
});
setTimeout(function() {
var array = plus.webview.all();
console.log("当前预加载的页面数量为" + array.length);
if(array) {
for(var i = 0, len = array.length; i < len; i++) {
console.log(array[i].getURL());
}
}
}, 3000);
});
cw.addEventListener("hide", function() {
console.log("map页hide了");
});
cw.addEventListener("close", function() {
console.log("map页close了");
});
});
})(window, mui, __);
亿朵云 (作者)
好的,谢谢.我还有一些问题,在http://ask.dcloud.net.cn/article/25提到了"同时显示在屏幕上的webview不要超过3个,隐藏在后台的webview不要超过10个".第一,这里的"显示"是否是指处于"show"状态,"隐藏"是否是指处于"hide"状态;第二,如果是这样,当我们在webview A调用show方法显示另外一个webview B的时候,是否应该显式的close或者hide掉webview A以避免同时"显示"的webview超过3个
2017-05-18 09:37
Neil_HL
A打开B,一般是隐藏(hide)A, 显示是指的show,建议屏幕上显示的webview最好为1个,这样逻辑好处理一些,有需要的话就两个或3个,一旦超过3个,处理起来比较麻烦,主要还是看开发者自己的需求决定。
2017-05-18 16:40
亿朵云 (作者)
但是,我测试的时候,如果直接在webviewA调用webviewB.show(),这个时候并没有触发webviewA的hide事件,也就是说虽然现在屏幕上看不见webviewA了,但是由于没有触发webviewA的hide事件,所以webviewA依然是处于show状态的,这与"A打开B,一般是隐藏(hide)A"是否不一致
2017-05-19 11:07