アプリケーションアイドル状態¶
CPUパフォーマンスを向上させるために、Kanzi は Kanzi アプリケーションがアイドル状態のときにアプリケーションコンテンツを再描画しません。
Kanzi は、入力、タスク、タイマー、アニメーションがない場合、またはアプリケーション内でレンダリングを更新するものが何もない場合にメインループを一時停止します。
アプリケーションアイドル状態を使用するときには、次の点を考慮してください:
Kanzi アプリケーションがアニメーションを表示している場合、Kanzi はデフォルトでCPUを最大FPSにスロットルします。アニメーションがない場合、Kanzi はアプリケーションをアイドル状態に設定します。このため、CPUと電力を節約するために、Kanzi はデフォルトで最大フレームレートを1秒あたり60フレームに制限します。アプリケーションの設定を使用して、アプリケーションの最大フレームレートを設定してください。
MaximumFPS を参照してください。
アプリケーションがメインループ
UserStageに追加した機能のように、メインループタスクを継続的に実行することに依存している場合は、アイドル状態を無効にしてください。ApplicationIdleState を参照してください。
アプリケーションがアイドル状態で、アプリケーションがレンダーパスツリーに変更を加えた場合、Kanzi は変更をレンダリングするためのレンダリングをトリガーしません。このような場合に変更をレンダリングするには、任意のノードで
Node::invalidateDraw関数を呼び出して手動でレンダリングをトリガーする必要があります。
Kanzi アプリケーションでアプリケーションアイドル状態を効果的に使用したい場合は、次の点に注意してください。
タスクディスパッチャー。タスクディスパッチャーは、他のスレッドがUIスレッドでタスクの実行をスケジュールすることを可能にします。この方法で、他のスレッドでのみ変更が発生したときにUIスレッドを起こすことができます。タスクディスパッチャーにタスクを追加すると、各タスクがUIスレッドを起こします。アプリケーションのCPUパフォーマンスを最適化したい場合は、必要なときにのみタスクディスパッチャーにタスクを追加してください。
タイマー。タイマーはアプリケーションをアクティブに保ち、CPUのパフォーマンスに影響を与えます。アプリケーションでタイマーが作動するたびに、アプリケーションはアイドル状態から復帰します。アプリケーションにサウンドを統合する場合、毎フレームで同期しないでください。例えば、アプリケーションを100 msごとにサウンドを同期するように設定してください。
レイアウトの変更とレンダリング。
ノードのサイズを設定するために使用するプロパティで Affect Layout 設定が有効になっている場合、アプリケーションは Kanzi がレイアウトの再計算を完了し、新しいレイアウトをレンダリングするまでアクティブな状態を維持します。
ノードをレンダリングするために使用するプロパティで Affect Rendering 設定が有効になっているが、その変更がノードサイズに影響を与えない場合(Affect Layout 設定が無効)、Kanzi はレイアウトを再計算せず、再レンダリングのみを行います。アプリケーションは、Kanzi が変更をレンダリングするまでアクティブな状態を維持します。
アプリケーションの設定でアプリケーションのアイドル状態を設定できます。ApplicationIdleState を参照してください。