質問

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

具体的には、Symbianアプリがバッテリーの消費を減らすためにOSを現在の状態に関して示唆する方法はありますか?たとえば、Androidでは、 ウェイクロック, 、これがデバイスがスタンバイモードに入るのを防ぎます - Symbianに似たものはありますか?

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

役に立ちましたか?

解決

  1. rtimer :: inacivity()メソッドでユーザー(in-)アクティビティを確認できます。この方法で説明されています フォーラムノキアウィキページ. 。また、非アクティブタイマーをリセットする方法についても説明しています。
  2. HAL APIを使用して、デバイス画面がオンまたはオフになっているかどうかを確認できます。 HalとHaldataのクラスを参照してください。このような呼び出しを使用できます。

TInt displayState; HAL::Get(HALData::EDisplayState, displayState);ディスプレイステートは、ディスプレイがオフになっている場合は0または他の場合に1つのいずれかを保持します。

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

使用することもできます ノキアエネルギープロファイラー バックグラウンドサービスのさまざまな省電力オプションを使用して、携帯電話の電力消費を記録するためのアプリケーション。また、ノキアのものを参照してください 資料 デバイスのパワーを節約するためのベストプラクティスを説明します。このドキュメントは非常に簡単ですが、それでも便利です。

お役に立てれば。

編集: 私の知る限り、独立したスレッドと開くCを開くと、Open Cは単なるプラグインであり、すべての実装はまだ「ネイティブSymbian」です。したがって、いくつかのリソースの定期的なポーリングを回避し、通常のブロッキングIOを使用するだけでは、コードは標準的なSymbian Activeオブジェクト技術(Symbian固有のセマフォを使用してスレッドをブロックする)とまったく同じ経済的です。

他のヒント

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

  • symbain activeObjects / user :: waitforxxxのために、プラットフォーム上の信号サービスを常に使用してください。
  • バックグラウンドスレッドの数を制限します(現在、すべてのモバイルデバイスはまだ1つのCPUです...)
  • システムサービスに固執しないでください(これは通常、モバイルアプリケーションで私のメインバッテリードレインであり、どのシステムサービスが最も多くのバッテリードレインを引き起こすかを見つけることを試みることを試みることを試みることは、これに非常に悪いです)。

私にとって、それは主にバッテリーの寿命とアプリケーションのパフォーマンス /応答性のトレードオフにかかっていることがわかりました。残念ながら、パフォーマンス /応答性の側面に常に並んでいるように見えるパワーは、バッテリーの排水を気にします.....

アプリケーションに優先度を低くする(RPROCESSおよびRTHREADクラスを参照)。あなたのアプローチは、あなたのバックグラウンドアプリケーションが何をするかによって本当に依存します。これらのものはほとんどのバッテリーを消費します:ラジオ(GSM/3G/WIFI/Bluetooth)、スクリーンバックライト、ファイルアクセス。

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

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

Symbianでは、バックグラウンドアクティビティを実行するために使用しているものに依存します。

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

例えば。ブラウザに何かをダウンロードするアプリケーションブラウザを開発している場合、ダウンロードアクティビティはバックグラウンドでアクティビティを開始し、いつ進行するかを表示する必要があります。

スレッドを使用している場合、スレッドの管理方法に依存します。アクティビティを開始する長い時間とバックグラウンドアクティビティが完了したときに再開するときに、どのスレッドが一時停止してもらうことができます。

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

以前は、アプリケーションによってリセットできる不活動タイマーがありました。これにより、画面が任意の画面セーバーモードに入ることができなくなります。

Symbianでさまざまな非同期関数を使用する場合、必要に応じてアプリが実行されます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top