通过setInterval创建的定时器,使用完毕后,需及时调用clearInterval()释放,避免导致内存泄漏。
// rules.json
{
"rules": {
"arkts": {
"ResourceLeak": [
{
"ruleId": "SetIntervalNotRelease",
"severity": "error",
"skip": false
}
]
}
}
} import UIAbility from '@ohos.app.ability.UIAbility';
/**
* 正例:正确释放资源
*/
export class TestRelease extends UIAbility {
onCreate(): void {
let intervalID = setInterval(() => {
console.log('do every 1s');
}, 1000);
clearInterval(intervalID);
}
} import UIAbility from '@ohos.app.ability.UIAbility';
/**
* 反例:未释放资源
*/
export class TestNotRelease extends UIAbility {
onCreate(): void {
let intervalID = setInterval(() => { // leak
console.log('do every 1s');
}, 1000);
clearInterval();
}
onDestroy(): void {
let intervalID = setInterval(() => { // leak
console.log('do every 1s');
}, 1000);
}
} Code Scanner代码检查规则的配置指导请参考1.6.3 代码检查工具(codescanner)