关于慢速定时器引起的部分手机发热卡顿

这个是一个 常驻节点, 用于游戏心跳,每隔1分钟发送一次信令,
image
image

大部分手机是没问题的, 部分iqoo机型,1+,红米node9,rog7等几款手机上
切换几次,或者多次场景,或者长时间游戏(几小时),

引起了手机发热,60度以上,游戏变得卡顿,甚至无法正常游戏!

虽然我现在把慢速定时器放到了 onLoad 里,解决了这个问题,但还是想知道原因!
或者正确的做法!
望大神们指点迷津!

我猜你的这个节点在不停的触发onEnable吧

onEnable 每次切换场景时回触发 但定时器不也clear了嘛! 只是有些机型上表现不佳!

嗯我仔细看了下,应该是js的clearInterval未生效的老生常谈,具体你可以问下度娘

你有没有发现,你的那部分机器,都是便宜货 :rofl:

onEnable和onDestroy执行没有一一对应?

onEnable 激活组件的时候调用
onDisable取消激活组件的时候调用
onDestroy销毁组件的时候调用
一 一对应关系,你应该在onDisable中去清理定时器,或者setInterval前先清理定时器。我最近也遇到这类问题,如果onEnable被多次调用,实际是应该执行了多个定时器,你清掉一个,另一个还是在一直执行。以上个人见解

建议系统功能写在系统模块,这样如果disable 再enable,会导致心跳时间不稳定

不写在ui代码里, 有道理呀!

  1. 定时器反复注册,onEnable对应onDisable

今天发现, 即便不用定时器,这块代码都注释掉,
发热依然纯在,只是有几率 不太热,所以似乎问题还没解决!

平台是原生还是小游戏啊,发热不是逻辑代码问题的话,就看draw call

android原生平台, 今天已经解决了,
因为加了个 分享的sdk包, 此包需要 androidx
现在已经去掉了, 游戏正常了!

进来仔细看了代码 ,以为能发现什么一些关键内容,,结果最后居然不是这个东西导致的