我有一个 JS 应用程序,它使用 setInterval 每秒更新多次。大多数时候它什么都不做,也不是很占用 CPU。我听说有人说 JavaScript 计时器会耗尽手机的电池寿命,但我没有看到任何事实或证据。
有什么好方法可以测量我在 iOS 上的 JS 应用程序的电池消耗吗?或者有人可以解释如何使用 setInterval 调用非 CPU 密集型函数会更快地耗尽电池?
我有一个 JS 应用程序,它使用 setInterval 每秒更新多次。大多数时候它什么都不做,也不是很占用 CPU。我听说有人说 JavaScript 计时器会耗尽手机的电池寿命,但我没有看到任何事实或证据。
有什么好方法可以测量我在 iOS 上的 JS 应用程序的电池消耗吗?或者有人可以解释如何使用 setInterval 调用非 CPU 密集型函数会更快地耗尽电池?
setInterval 每次运行时都会唤醒 CPU。你每秒说多少次?如果超过 10 个,您应该找到不同的解决方案,setInterval 是适合该工作的错误工具。
虽然我对您的问题没有具体答案,但您可以牢记一些指导方针。
当页面/选项卡/窗口不活动时,移动浏览器往往不会运行 javascript 代码。例如,在 iOS 中,setInterval 之类的代码只会在显示屏打开、Safari 打开以及包含代码的页面处于活动状态时运行。我相信它与 Android 和 WinPhone 设备类似。
在开发打算开放一段时间的 Web 应用程序时,您必须注意自己。这可能是餐厅评论网站、游戏或使用地理定位 (gps) api 的东西。如果您的 Web 应用程序打算长时间使用,那么持续运行代码会影响电池,可能会显着影响。您将需要在不同设备之间设置测试协议并测试每个设备以确保,因为没有简单的方法来给出具体数字。所有网络应用程序都是不同的。