目录

SetIntervalNotRelease

通过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)