退出页面释放监听
更新时间:
页面退出的时候取消监听绑定在页面的监听事件
清除定时器
推荐级别:强烈
每使用一次 setTimeout / setInterval 时必须要在页面消毁时与其相匹配的 clearTimeout / clearInterval 调用,否则可能会导致持续地内存泄露。
反例
export default {
onInit() {
setTimeout(() => {
// todo something
}, 1000)
setInterval(() => {
// todo something
}, 1000)
},
onDestroy() {},
}
复制代码
正例
let t1,t2;
export default {
onInit() {
t1 = setTimeout(() => {
// todo something
}, 1000)
t2 = setInterval(() => {
// todo something
}, 1000)
},
onDestroy() {
// 解除内存占用
clearTimeout(t1)
clearInterval(t2)
},
}
复制代码
取消监听事件
推荐级别:强烈
页面中使用的监听类接口(如 feature、C2JS 等),页面退出时必须清除监听。原因同上。
反例
export default {
onInit() {
brightness.subscribe({
callback: (data) => {},
})
busineseApp.on('onReceive', callback)
},
onDestroy() {},
}
复制代码
正例
export default {
onInit() {
brightness.subscribe({
callback: (data) => {},
})
busineseApp.on('onReceive', callback)
},
onDestroy() {
brightness.unsubscribe()
busineseApp.removeAllListener('onReceive')
},
}
复制代码
Native 模块释放相关资源
通过 requireModule
申请的资源,如果跟页面绑定,请在页面销毁的时候在页面 onDestroy()
中同步销毁,以免造成内存泄漏。