首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查消耗大量电池的过程和服务

如何检查消耗大量电池的过程和服务
EN

Stack Overflow用户
提问于 2015-06-18 09:40:36
回答 2查看 850关注 0票数 0

我已经创建了一个应用程序,它在某个设备中消耗48 %的电量,这在电源管理任务中是最高的,但是在一些设备中,它的5-6 %,我一直在后台运行一个服务,获取纬度和经度,并在用户登录时发送到服务器上。但是我也检查过了,通过从app登录,它仍然消耗了48 %。

使用融合位置api获取纬度和经度。

因此,请告诉我如何解决这个问题的电池消耗在某些电话,以及如何检查哪个过程和服务正在耗尽电池。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-19 17:02:15

我同意隆尼的观点,那就是长时间的拉票。考虑到耗电量的48%,它不太可能是GPS电路本身。我想是CPU的问题。除非保持活动,否则移动处理器是非常高效的。让我解释一下。active proessor是移动设备上最耗电的设备。那么,一个处理器怎么能成为最大的耗电者,同时又是“高效的”呢?所谓处理器是“高效的”,我的意思是,当处理器不做任何事情时,它会进入一个非常有效的低功耗状态,它的功耗可能比处于活动状态时低一个数量级。

我的猜测是,您正在保持处理器处于活动状态。您想要的是尽可能保持处理器空闲。

以下是我的建议:

  • 使用lat/long fetch之间的最长间隔。一个常见的错误是,更多的检查意味着更好的响应,但是不必要的检查通常不会改善响应,只会使处理器保持活动状态,并且毫无理由地消耗电源。
  • 永远不要投票!轮询使处理器保持活动状态,这没有什么好的理由消耗电源。让处理器睡觉。
  • 使用中断处理事件。系统库(如wake ())将处理器置于非活动状态,并使用中断来唤醒处理器。
  • 如果库例程已经存在,不要编写自己的例程。OS/库编写人员非常了解电源效率的重要性,并编写了尽可能高效的代码。
  • 使您的代码运行尽可能快。快速意味着更多的空闲时间,这会使处理器进入更高效的电源状态。例如,如果您可以每60秒进行一次lat/long检查,并且可以在10秒而不是30秒内完成处理,那么您有50秒的空闲时间和30秒的空闲时间。
  • 如果可能的话,使用一个好的优化编译器和良好的优化移动库。好的编译器可以创建更高效、运行更快的代码。好的图书馆不仅运行得更快,而且使用高效的技术。
  • 如果使用大量线程,请使用线程池。创建和拆卸线程是昂贵的。
  • 确保检查设备上的API规范。我可以想象,一些开放源码软件/驱动程序,如全球定位系统,将要求明确关闭设备,而另一些将这样做含蓄。

以下是更多信息:Battery-safe coding

旁白:我已经看到了思想泡沫:“为什么有些设备比其他设备耗电量少?”有些库非常聪明,可以预见糟糕的编程实践和解决方法。其他人都是哑巴。同样的操作系统,系统库和线程调度。

票数 1
EN

Stack Overflow用户

发布于 2015-06-18 11:14:23

我最好的猜测是,长和拉的持续抓取正在耗尽电池。如果我没记错的话,我几年前做过的定位就是这样的。

我想说,你应该试着看看你想要的坐标的刷新率。也许它不需要刷新超过5次每分钟。在这种情况下,您将节省对获取坐标的大量调用,当然也可以节省电池。

至于为什么在某些设备上不同,恐怕我不知道。也许是安卓的版本?

编辑:我不知道Eclipse是否能做到这一点,我也不认为它能做到。但是,您可能需要检查本文:papers/Carroll.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30911836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档