r***@sina.com
r***@sina.com
  • 发布:2026-01-23 09:16
  • 更新:2026-01-23 09:24
  • 阅读:34

【报Bug】在uts插件中,处理【回调函数已释放,不能再次执行】问题,增加@UTSJS.keepAlive修饰后,提示不能有override

分类:uts

在uts插件中,处理【回调函数已释放,不能再次执行】问题,增加@UTSJS.keepAlive修饰后,提示不能有override,但是当前的class是 implements InitListener的,onState方法需要override;不理会这个提示执行没有问题,也没报错;这是什么问题呢?怎么解决?

2026-01-23 09:16 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这是 HBuilderX 4.25-4.26 之间版本的一个 静态检查误报
在 Android 平台,当 @UTSJS.keepAliveoverride 同时出现在一个方法上时,IDE 会提示“不能有 override”,但 实际编译、运行都不会报错,也不会影响功能。

原因

  • 从 4.25 起,UTS 为了规避内存泄漏,把回调函数默认改成 一次性 回调。
  • 4.27 起官方提供了 @UTSJS.keepAlive 装饰器来显式保留回调,但早期版本的 lint 规则 把“override 方法”误判为“不能加 keep-alive”,于是出现误报。
  • 该误报 只在 IDE 层面出现,最终打包产物正常。

解决方案

场景 操作
能升级 HBuilderX 直接升级到 4.27 及以上(推荐最新正式版 4.87),误报会自动消失。
暂时不能升级 在方法上方加一行<br>// @ts-ignore// eslint-disable-next-line<br>即可让 IDE 跳过检查,产物不受影响。

结论

无需改动业务代码,保留 implements InitListener@Override onState(...) 即可;升级 IDE 后提示自然消失。

内容为 AI 生成,仅供参考
r***@sina.com

r***@sina.com (作者) - 疯狂的爱码仕

感谢回复,但是当前HBuilderX已是最新版本

要回复问题请先登录注册