是否有任何“最佳实践”来撰写力量 背景 在Symbian中应用?

具体来说,Symbian应用程序是否有任何方法(IE API)提示OS有关其当前状态以减少电池的消耗?例如,在Android中,有一个概念 唤醒锁, ,哪种阻止设备进入待机模式 - Symbian中有类似的东西吗?

编辑:
使用活动对象等,将代码作为单独的线程作为单独的线程作为单独的线程有什么影响? (大多数情况下,开放式代码在IO上都在阻止)。

有帮助吗?

解决方案

  1. 您可以使用RTIMER :: intacivity()方法检查用户(IN-)活动。这种方式描述 论坛诺基亚Wiki页面. 。那里还描述了如何重置非活动计时器。
  2. 您可以使用HAL API检查设备屏幕是否打开还是关闭。参见HAL和HALDATA课程。您可以使用这样的电话:

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

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

您也可以使用 诺基亚能量剖面 记录手机功耗的应用程序,并提供背景服务的不同节省选项。也请参考诺基亚 文档 描述节省设备功能的最佳实践。该文档非常简单,但仍然有用。

希望这可以帮助。

编辑: 据我所知,关于单独的线程和打开C。开放c只是一个插件,深处所有实现仍然是“本地symbian”。因此,就您避免定期对某些资源进行调查并仅使用常规阻止IO,您的代码与标准Symbian Active对象技术(使用Symbian特定的信号量来阻止线程)的代码相同。

其他提示

我没有在Symbain中遇到任何特别的东西,以使设备脱离待机模式。基本上,“最佳实践”将与所有移动设备相同:

  • 不要循环等待事物,始终使用平台上的任何信号服务,用于Symbain ActiveObjects / user :: Waitforxxx
  • 限制背景线程的数量(当前所有移动设备仍然只有1个CPU ...)
  • 不要挂在系统服务上,请尽快关闭它们(通常这是我在移动应用程序中的主要电池耗尽,有时试图找到最大的电池耗电可能是真正的痛苦,Winmo对此非常不好)。

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

给您的应用程序较低的优先级(请参阅RPROCESS和RTHREAD类)。您的方法实际上取决于您的背景申请。这些东西消耗了大多数电池:无线电(GSM/3G/WIFI/蓝牙),屏幕背光,文件访问。

Symbian OS将始终尝试使您的申请入睡,您无需告诉它要这样做。只需确保您的方法使其有机会入睡。

电源管理是开发应用程序时最重要的问题。

在Symbian中,这取决于您用于运行背景活动的内容。

无论您是使用线程还是ActiveX控件。

例如。您正在开发应用程序浏览器,您希望浏览器下载某些内容,然后下载活动应该在后台,有能力的活动开始,何时显示进度以及何时完成,它应该再次出现。

如果您使用的是线程,则取决于如何管理线程。您可以喜欢当长时间参加活动开始以及何时恢复后背景活动完成执行时暂停哪个线程。

实际上,这是您遇到的非常好的话题

曾经有一个不活动的计时器,该计时器可以通过应用程序重置。这将阻止屏幕进入任何屏幕节省模式。

如果您在Symbian中使用各种异步功能,则在适当的情况下,您的应用程序将运行。

这些方法之一应根据您的需求来起作用。如果您描述要详细实现的目标,那么可以更容易地为您提供帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top