如何主动销毁page进行内存优化
发布于 5 年前 作者 xia75 7368 次浏览 来自 问答

目前正在写的一款小程序功能比较多(长列表、富文本、群聊、视频播放),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(‘清理页面缓存’);

        }

    })

}

对总内存的影响并不大,想请教下有没有主动销毁页面的办法?

或者有其它更好的优化办法也请告知,谢谢~~

4 回复

非常感谢,wx.reLaunch()应该可以,我试试

楼主解决了吗,我的情况和你很类似,安卓手机达到500m的时候部分黑屏部分闪退

请问楼主最后怎么解决的,三星机型上的表现目前如何,黑屏的几率?

wx.reLaunch()或者wx.redirectTo可以根据适当情况使用哦

回到顶部