在Symbian中编写一个高效的后台应用程序有什么“最佳实践”吗?
具体来说,Symbian应用程序是否有任何方法(即API)提示操作系统当前的状态,以减少电池消耗?例如,在Android系统中,Wake的概念可以防止设备进入待机模式-- Symbian中有类似的地方吗?
编辑:
当将代码作为一个单独的线程运行在Open库中,而不是使用活动对象等作为“本机”Symbian C++运行时,有什么含义吗?(大多数情况下,Open代码都会阻塞IO )。
发布于 2010-08-31 11:54:29
如果关闭显示,TInt displayState; HAL::Get(HALData::EDisplayState, displayState);和displayState将保持0或在其他情况下保持1。
使用这些API,您将知道用户现在是否处于活动状态,因此您可以更改后台服务的行为,以降低其功耗。
您还可以使用诺基亚能源分析器应用程序记录手机的功耗,并为您的后台服务提供不同的节能选项。此外,请参阅诺基亚的文档描述的最佳做法,以节省设备的力量。这份文件很直截了当,但还是很有用。
希望这能有所帮助。
编辑:关于独立线程和Open的。据我所知,Open只是一个插件,所有的实现都是“本地Symbian”。因此,只要您避免定期轮询某些资源,只使用通常的阻塞IO,您的代码在功能上与标准Symbian活动对象技术(使用Symbian特有的信号量来阻塞线程)是相当经济的。
发布于 2010-08-30 20:13:59
我在Symbain并没有遇到什么特别的东西来让设备远离待命模式。基本上,“最佳做法”将与所有移动设备相同:
对我来说,我发现这主要取决于电池寿命和应用程序的性能/响应能力之间的权衡。不幸的是,电源似乎总是与性能/响应能力方面和该死的电池耗竭……
发布于 2010-09-04 20:03:27
给予应用程序低优先级(请参阅RProcess和RThread类)。您的方法将真正取决于后台应用程序所做的工作。这些设备耗电量最大:收音机(GSM/3G/WIFI/蓝牙)、屏幕背光、文件访问。
Symbian总是试图让您的应用程序进入睡眠状态,您不需要让它这样做。只要确保你的方法让它有机会让它入睡。
https://stackoverflow.com/questions/3593777
复制相似问题