何気なく使っているFrameworks 第9回 CPU使用状況を表示/ addView

CPU使用状況を表示

ICSから開発者向けオプションに「CPU使用状況を表示」が追加されました。

Settingsで設定すると

以下の処理順でサービス:LoadAverageServiceが起動します。
このサービス内でProcessから取得した値をオーバーレイ表示を行っています。
値が何を意味するのかはProcessStats.javaをみればわかります。

ついでに、Viewの追加→WindowManagerServiceまでの流れも要チェックです。
特にViewRoot.javaがViewRootImpl.javaへ変わり、中身もそれなりに修正されています。

DevelopmentSettings#onPreferenceTreeClick
- writeCpuUsageOptions()
  - startService "com.android.systemui.LoadAverageService" of SysttemUI.
  - LoadAverageService#onCreate()
    - new LoadView extends ProcessStats
        - new Stats
    - WindowManager#addView() with Overlay layer of SECURE_SYSTEM_OVERLAY_LAYER
        - WindowManagerImpl#addView
            - ViewRootImpl#setView
                - IWindowSession#add
                    - Session#add
                        - WindowManagerService#addWindow

確認しておいた方がいいソース

\packages\apps\Settings\src\com\android\settings

  • DevelopmentSettings.java

\frameworks\base\packages\SystemUI\src\com\android\systemui

  • LoadAverageService.java

\frameworks\base\core\java\com\android\internal\os

\frameworks\base\core\java\android\view

\frameworks\base\services\java\com\android\server\wm

  • WindowManagerService.java

\frameworks\base\policy\src\com\android\internal\policy\impl

  • PhoneWindowManager.java

簡易クラス図