代码之家  ›  专栏  ›  技术社区  ›  adamk

Symbian中的电源管理

  •  2
  • adamk  · 技术社区  · 14 年前

    有没有什么“最佳实践”来编写一个省电的 背景 在Symbian中的应用?

    例如,在Android中,就有 ,防止设备进入待机模式-Symbian中是否有类似的功能?

    编辑:
    当将代码作为一个单独的线程与OpenCc库运行,而不是使用“原生”Symbian C++,使用活动对象等时,是否有任何含义?(Open-C代码大部分时间阻塞IO)。

    5 回复  |  直到 14 年前
        1
  •  3
  •   Haspemulator    14 年前
    1. 可以使用RTimer::Inactivity()方法检查用户(in-)活动。中描述了这种方法 Forum Nokia Wiki page . 这里还描述了如何重置非活动计时器。
    2. 您可以使用halapi检查设备屏幕是打开还是关闭。参见HAL和HALData类。您可以使用以下呼叫:

    TInt displayState; HAL::Get(HALData::EDisplayState, displayState); 如果显示器关闭,displayState将保持0,否则将保持1。

    你也可以使用 Nokia Energy Profiler document 描述节省设备电源的最佳实践。这份文件非常简单,但仍然有用。

    希望这有帮助。

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

        2
  •  1
  •   Shane Powell    14 年前

    我在Symbain中没有遇到任何特殊的东西来阻止设备进入待机模式。基本上,“最佳实践”与所有移动设备相同:

    • 不要循环等待,始终使用平台上可用的任何信令服务,例如Symbain ActiveObjects/User::WaitForXxx
    • 限制后台线程的数量(当前所有移动设备仍只有1个CPU…)
    • 不要挂靠系统服务,尽快关闭它们(这通常是我的主要电池消耗在我的移动应用程序,有时试图找到哪个系统服务导致电池消耗最多可能是一个真正的痛苦,WinMo是非常不好的)。

    对我来说,我发现这主要归结为电池寿命和应用程序的性能/响应性之间的权衡。不幸的是,电源似乎总是站在性能/响应性的一边,并该死的电池消耗。。。。。

        3
  •  1
  •   James    14 年前

    将应用程序设置为低优先级(请参阅RProcess和RThread类)。您的方法实际上取决于您的后台应用程序所做的工作。这些东西消耗了大部分电池:收音机(GSM/3G/WIFI/BlueTooth)、屏幕背光、文件访问。

    Symbian操作系统总是试图让你的应用程序进入休眠状态,你不需要告诉它这样做。只要确保你的方法能让它有机会入睡。

        4
  •  0
  •   Rakesh Gondaliya    14 年前

    在开发应用程序时,电源管理是一个非常重要的问题。

    在Symbian中,它取决于您使用什么来运行后台活动。

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

    例如,您正在开发应用程序浏览器,您希望浏览器下载一些东西,然后下载活动应在后台进行,可启动的活动开始,何时显示进度,何时完成,它应该再次出现在前端。

    如果您正在使用线程,这取决于您如何管理线程。您可以选择在长时间执行活动开始时暂停哪个线程,以及在后台活动完成执行后恢复哪个线程。。

        5
  •  0
  •   Ola    14 年前

    以前有一个可以由应用程序重置的非活动计时器。这将防止屏幕进入任何屏幕保护程序模式。

    如果您在Symbian中使用各种异步功能,那么您的应用程序将在适当的时候运行。

    其中一种方法应该根据您的需要而起作用。如果你能更详细地描述你想要达到的目标,你会更容易得到帮助。