2

Symbianで 電力効率の高いバックグラウンドアプリケーションを作成するための「ベストプラクティス」はありますか?

具体的には、Symbianアプリがバッテリー消費を減らすために現在の状態に関してOSにヒントを与える方法(つまりAPI)はありますか?たとえば、Androidには、デバイスがスタンバイモードになるのを防ぐWake Locksの概念があります-Symbianに似たようなものはありますか?

編集:
アクティブオブジェクトなどを使用して、「ネイティブ」のSymbian C ++としてではなく、Open-Cライブラリを使用してコードを個別のスレッドとして実行する場合に影響はありますか?(Open-Cコードはほとんどの場合IOをブロックしています)。

4

5 に答える 5

3
  1. RTimer :: Inactivity()メソッドを使用して、ユーザーの(非)アクティビティを確認できます。この方法は、ForumNokiaWikiページで説明されています。また、非アクティブタイマーをリセットする方法についても説明します。
  2. HAL APIを使用して、デバイス画面がオンかオフかを確認できます。クラスHALおよびHALDataを参照してください。次のような呼び出しを使用できます。

TInt displayState; HAL::Get(HALData::EDisplayState, displayState); また、displayStateは、表示がオフの場合は0を保持し、それ以外の場合は1を保持します。

これらのAPIを使用すると、ユーザーが現在アクティブであるかどうかがわかるため、バックグラウンドサービスの動作を変更して、消費電力を削減できます。

Nokia Energy Profilerアプリケーションを使用して、バックグラウンドサービスのさまざまな省電力オプションを使用して、受話器の消費電力を記録することもできます。また、デバイスの電力を節約するためのベストプラクティスを説明しているNokiaのドキュメントを参照してください。このドキュメントは非常に単純ですが、それでも役立ちます。

お役に立てれば。

編集:個別のスレッドとOpen Cについて。私が知る限り、Open Cは単なるプラグインであり、すべての実装は依然として「ネイティブSymbian」です。したがって、一部のリソースの定期的なポーリングを回避し、通常のブロッキングIOを使用する限り、コードは標準のSymbian Active Objectsテクニック(Symbian固有のセマフォを使用してスレッドをブロックする)とまったく同じように経済的です。

于 2010-08-31T11:54:29.260 に答える
1

デバイスをスタンバイモードから外すためにSymbainで特別なことは何もありません。基本的に、「ベストプラクティス」は、すべてのモバイルデバイスと同じです。

  • 物事を待ってループしないでください。SymbainActiveObjects/User:: WaitForXxxには、プラットフォームで利用可能なシグナリングサービスを常に使用してください。
  • バックグラウンドスレッドの数を制限します(現在、すべてのモバイルデバイスはまだ1 CPUのみです...)
  • システムサービスに固執しないで、できるだけ早く閉じてください(これは通常、モバイルアプリケーションのメインのバッテリーの消耗です。バッテリーの消耗が最も多いシステムサービスを見つけようとすると、非常に苦痛になります。WinMoはこれに非常に適していません)。

私にとって、それは主にバッテリー寿命とアプリケーションのパフォーマンス/応答性の間のトレードオフに帰着することがわかります。残念ながら、常にパフォーマンス/応答性の側面にあり、バッテリーの消耗を抑えるように見える電力.....

于 2010-08-30T20:13:59.603 に答える
1

アプリケーションの優先度を低くします(RProcessクラスとRThreadクラスを参照)。あなたのアプローチは、あなたのバックグラウンドアプリケーションが何をするかに本当に依存します。ラジオ(GSM / 3G / WIFI / BlueTooth)、画面のバックライト、ファイルアクセスなど、ほとんどのバッテリーを消費します。

Symbian OSは常にアプリケーションをスリープ状態にしようとしますが、これを行うように指示する必要はありません。あなたのアプローチがそれを眠らせる機会を与えることを確認してください。

于 2010-09-04T20:03:27.327 に答える
0

以前は、アプリケーションによってリセットされる可能性のある非アクティブタイマーがありました。これにより、画面がスクリーンセーバーモードに入るのを防ぐことができます。

Symbianでさまざまな非同期関数を使用する場合、アプリは適切なときに実行されます。

これらの方法の1つは、ニーズに応じて機能するはずです。あなたが達成したいことをより詳細に説明するならば、それはあなたを助けるのがより簡単でしょう。

于 2010-08-31T07:46:41.037 に答える
0

電力管理は、アプリケーションを開発する際の非常に重要な問題です。

Symbianでは、バックグラウンドアクティビティの実行に何を使用しているかによって異なります。

スレッドまたはActiveXコントロールを使用しているかどうか。

たとえば ブラウザに何かをダウンロードさせたいアプリケーションブラウザを開発している場合、ダウンロードアクティビティはバックグラウンドで実行され、可能なアクティビティが開始され、進行状況を表示するタイミングと終了すると、再び前面に表示されます。

スレッドを使用している場合は、スレッドの管理方法によって異なります。長時間のアクティビティが開始されたときに一時停止するスレッドと、バックグラウンドアクティビティの実行が終了したときに再開するスレッドを指定できます。

実際、これはあなたが出くわした非常に良いトピックです

于 2010-08-30T14:31:13.107 に答える