2295关注7666浏览
目前正在写的一款小程序功能比较多(长列表、富文本、群聊、视频播放),5个tab页面再加两个swiper子页面,标题栏也是用custom自定义的。在微信小程序IOS上测试还可以接受,但是在安卓上性能就有点差了,测试过小米、酷派、华为、魅族这几个机型(比较卡顿,但还可以将就使用),但是在三星手机上,5个tab页全部点开就会出现黑屏闪退问题(必现),调试基本确认是内存太高导致,每次闪退内存都在450M左右。从业务代码上看,已经没有太大的优化提升空间(交互复杂的地方挺多的)。目前能想到的方案就是对已使用过的页面进行内存回收,测试过如下方式:
onShow() {
let homePageData = wx.getStorageSync('homePageData');
console.log('----onshow----', homePageData);
if (homePageData) {
for(let key in homePageData) {
this[key] = homePageData[key];
}
console.log('重新设置Data');
}
setTimeout(() => {
wx.removeStorageSync('homePageData');
}, 50)
}
onHide() {
console.log('---onhide----', this.$data);
let that = this;
wx.setStorage({
key: "homePageData",
data: that.$data,
success: () => {
for(let key in that.$data) {
that[key] = '';
that.$apply();
}
console.log('清理页面缓存');
}
})
}
对总内存的影响并不大,想请教下有没有主动销毁页面的办法?
或者有其它更好的优化办法也请告知,谢谢~~
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
Taniya
17人对此回答表示赞同
wx.reLaunch()或者wx.redirectTo可以根据适当情况使用哦
展开174回复分享发布于 5年前评论(4)
收起评论
-
Lucas
3人对此回答表示赞同
非常感谢,wx.reLaunch()应该可以,我试试
展开30回复分享发布于 5年前评论(0)
收起评论
我也想找主动销毁页面的实例
我目前的代码总量1.4M,有几个protobuf文件需要动态获取加起来也才2M多,首屏所有的图片资源加起来(未针对性压缩)才14.5M,所有的API数据没有具体统计,但我所有的api都存storage肯定是绰绰有余(也即不超过10M),这样算起来总共也才不超过30M的内存,我自己感觉还是小程序数据控制层和视图层数据交互对内存耗用太大,三星手机太吃内存(同样的情况下,不跟微信小程序IOS比,跟魅族前年的一款低端机比,内存都要高出50%)。
不要想着把实例怎么样,可以试着看看是什么原因导致内存占用那么大
我现在的情况是第一次切换满五个tab的时候在三星手机上内存就已经超过450M了,请教下大家还有其它方案不?有没有办法我直接把page的实例置为空?