- 您可以使用 RTimer::Inactivity() 方法检查用户(in-)活动。这种方式在诺基亚论坛 Wiki 页面中进行了描述。那里还描述了如何重置不活动计时器。
- 您可以使用 HAL API 检查设备屏幕是否打开或关闭。请参阅 HAL 和 HALData 类。您可以使用这样的调用:
TInt displayState;
HAL::Get(HALData::EDisplayState, displayState);
如果显示器关闭,则 displayState 将保持 0 或在其他情况下保持 1。
通过这些 API,您将知道用户现在是否处于活动状态,因此您将能够更改后台服务的行为以降低其功耗。
您还可以使用诺基亚 Energy Profiler应用程序记录手机的耗电量,并为您的后台服务提供不同的省电选项。另请参阅诺基亚的文档,其中描述了节省设备电量的最佳实践。该文档非常简单,但仍然很有用。
希望这可以帮助。
编辑:关于单独的线程和 Open C。据我所知,Open C 只是一个插件,所有的实现都仍然是“原生 Symbian”。因此,只要您避免定期轮询某些资源并仅使用通常的阻塞 IO,您的代码在功耗上与标准 Symbian 主动对象技术(使用 Symbian 特定的信号量来阻塞线程)非常经济。