アプリケーションアイドル状態

CPUパフォーマンスを向上させるために、Kanzi は Kanzi アプリケーションがアイドル状態のときにアプリケーションコンテンツを再描画しません。

Kanzi は、入力、タスク、タイマー、アニメーションがない場合、またはアプリケーション内でレンダリングを更新するものが何もない場合にメインループを一時停止します。

アプリケーションアイドル状態を使用するときには、次の点を考慮してください:

  • Kanzi アプリケーションがアニメーションを表示している場合、Kanzi はデフォルトでCPUを最大FPSにスロットルします。アニメーションがない場合、Kanzi はアプリケーションをアイドル状態に設定します。このため、CPUと電力を節約するために、Kanzi はデフォルトで最大フレームレートを1秒あたり60フレームに制限します。アプリケーションの設定を使用して、アプリケーションの最大フレームレートを設定してください。

    MaximumFPS を参照してください。

  • アプリケーションがメインループ UserStage に追加した機能のように、メインループタスクを継続的に実行することに依存している場合は、アイドル状態を無効にしてください。

    ApplicationIdleState を参照してください。

  • アプリケーションがアイドル状態で、アプリケーションがレンダーパスツリーに変更を加えた場合、Kanzi は変更をレンダリングするためのレンダリングをトリガーしません。このような場合に変更をレンダリングするには、任意のノードで Node::invalidateDraw 関数を呼び出して手動でレンダリングをトリガーする必要があります。

Kanzi アプリケーションでアプリケーションアイドル状態を効果的に使用したい場合は、次の点に注意してください。

  • タスクディスパッチャ。タスクディスパッチャを使用すると、他のスレッドが UI スレッドでのタスクの実行をスケジュールできます。これにより、変更が他のスレッドでのみ発生した場合に UI スレッドをウェイクアップできます。アプリケーションがアイドル状態のときにタスクディスパッチャにタスクを追加すると、各タスクが UI スレッドをウェイクアップします。アプリケーションの CPU パフォーマンスを最適化したい場合は、必要なときにのみタスクディスパッチャにタスクを追加してください。

    メインループが一時停止している間、タスクは UI スレッドをウェイクアップしません。タスクは待機し、メインループが再び実行された後の最初のフレームで Kanzi がそれらをすべて実行します。例えば、Android ではアプリケーションがバックグラウンドにある間、また Kanzi Android framework (droidfw) では Kanzi ビューがアクティブでない間、メインループは一時停止します。アクティブなビューがない間のタスクの送信 を参照してください。

  • タイマー。タイマーはアプリケーションをアクティブに保ち、CPUのパフォーマンスに影響を与えます。アプリケーションでタイマーが作動するたびに、アプリケーションはアイドル状態から復帰します。アプリケーションにサウンドを統合する場合、毎フレームで同期しないでください。例えば、アプリケーションを100 msごとにサウンドを同期するように設定してください。

  • アニメーション。実行中のアニメーションは、実行されている間ずっとアプリケーションを起動状態に保ちます。これは、Kanzi がフレームごとにアニメーション値を適用する必要があるためです。これには、ターゲット値に到達した補間など、現在どの値も変更していないアニメーションも含まれます。Property Target Interpolator と Property Target Easing Interpolator は、補間がターゲット値に到達すると、その補間を実行中として報告しなくなり、補間対象のプロパティに新しい値を設定すると再び報告します。プロパティ値の補間 と イージング関数を使用してプロパティ値を補間する を参照してください。

  • レイアウトの変更とレンダリング。

    • ノードのサイズを設定するために使用するプロパティで Affect Layout 設定が有効になっている場合、アプリケーションは Kanzi がレイアウトの再計算を完了し、新しいレイアウトをレンダリングするまでアクティブな状態を維持します。

    • ノードをレンダリングするために使用するプロパティで Affect Rendering 設定が有効になっているが、その変更がノードサイズに影響を与えない場合(Affect Layout 設定が無効)、Kanzi はレイアウトを再計算せず、再レンダリングのみを行います。アプリケーションは、Kanzi が変更をレンダリングするまでアクティブな状態を維持します。

アプリケーションの設定でアプリケーションのアイドル状態を設定できます。ApplicationIdleState を参照してください。

関連項目

アプリケーションの起動時間の最適化

アプリケーションのパフォーマンスのトラブルシューティング