首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symbian中的电源管理

Symbian中的电源管理
EN

Stack Overflow用户
提问于 2010-08-29 06:28:28
回答 5查看 1.1K关注 0票数 1

在Symbian中编写一个高效的后台应用程序有什么“最佳实践”吗?

具体来说,Symbian应用程序是否有任何方法(即API)提示操作系统当前的状态,以减少电池消耗?例如,在Android系统中,Wake的概念可以防止设备进入待机模式-- Symbian中有类似的地方吗?

编辑:

当将代码作为一个单独的线程运行在Open库中,而不是使用活动对象等作为“本机”Symbian C++运行时,有什么含义吗?(大多数情况下,Open代码都会阻塞IO )。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-08-31 11:54:29

  1. 您可以使用RTimer::inactive()方法检查用户(in-)活动。这种方式在诺基亚Wiki论坛页面中有描述。这里还描述了如何重置无活动计时器。
  2. 您可以使用HAL检查设备屏幕是打开还是关闭。请参见类HAL和HALData。您可以使用这样的呼叫:

如果关闭显示,TInt displayState; HAL::Get(HALData::EDisplayState, displayState);和displayState将保持0或在其他情况下保持1。

使用这些API,您将知道用户现在是否处于活动状态,因此您可以更改后台服务的行为,以降低其功耗。

您还可以使用诺基亚能源分析器应用程序记录手机的功耗,并为您的后台服务提供不同的节能选项。此外,请参阅诺基亚的文档描述的最佳做法,以节省设备的力量。这份文件很直截了当,但还是很有用。

希望这能有所帮助。

编辑:关于独立线程和Open的。据我所知,Open只是一个插件,所有的实现都是“本地Symbian”。因此,只要您避免定期轮询某些资源,只使用通常的阻塞IO,您的代码在功能上与标准Symbian活动对象技术(使用Symbian特有的信号量来阻塞线程)是相当经济的。

票数 3
EN

Stack Overflow用户

发布于 2010-08-30 20:13:59

我在Symbain并没有遇到什么特别的东西来让设备远离待命模式。基本上,“最佳做法”将与所有移动设备相同:

  • 不要循环等待东西,总是使用平台上的任何信令服务,用于Symbain ActiveObjects / User::WaitForXxx
  • 限制后台线程的数量(目前所有移动设备仍然只有一个CPU.)
  • 不要坚持系统服务,尽快关闭它们(在我的移动应用程序中,这通常是我的主要电池耗尽,有时试图找出哪个系统服务导致最多的电池耗尽可能是一个真正的痛苦,WinMo对此非常不利)。

对我来说,我发现这主要取决于电池寿命和应用程序的性能/响应能力之间的权衡。不幸的是,电源似乎总是与性能/响应能力方面和该死的电池耗竭……

票数 1
EN

Stack Overflow用户

发布于 2010-09-04 20:03:27

给予应用程序低优先级(请参阅RProcess和RThread类)。您的方法将真正取决于后台应用程序所做的工作。这些设备耗电量最大:收音机(GSM/3G/WIFI/蓝牙)、屏幕背光、文件访问。

Symbian总是试图让您的应用程序进入睡眠状态,您不需要让它这样做。只要确保你的方法让它有机会让它入睡。

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

https://stackoverflow.com/questions/3593777

复制
相关文章

相似问题

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