2016-05-26 18 views
1

AndroidブートプロセスでシステムUIがいつ読み込まれるかを知るには? ステータスバーとナビゲーションバーの表示はまったく同じですか? SystemUIは特権アプリですので、ランチャーアプリ(ホームスクリーン)の起動前にロードされていますか? わかりません。どんな提案も大歓迎です。AndroidブートでSystemUIが読み込まれる場合

答えて

4

以下は、起動時にシステムUIコンポーネントを「読み込む」シーケンスを少し説明した簡単な説明です。私はAndroid 4.2でそれを実演しますが、シーケンスは他のバージョンとかなり似ています。

  • SystemServerは* including StatusBarManagerService、コアシステムサービスとの「完了」である場合には、それはsystem is readyことサードパーティのコードを通知し、システムのUI(ライン870)、またはより正確を開始し、内SystemUIServicecom.android.systemuiパッケージ**
  • SystemUIServiceは、そのonCreate()方法UIコンポーネントと格納SystemUIタイプのmServices[]アレイ内のコンポーネントへの参照を初期化/起動だけAndroidapplication componentあります。 1番目の要素(mServices[0])は、ステータスバーまたはシステムバー(ステータス+ナビバー)です。
  • BaseStatusBarは、抽象的なSystemUIクラスの実装で、いくつかのUIを行います(WindowManagerなどへのビューの追加など)。さらに、抽象的なUI関連のメソッドの範囲(例:createAndAddWindows())をサブクラスによって実装すると宣言します。 PhoneStatusBar
  • ステータスバーとナビゲーションバーは、単一のビューで構成されていません。 BaseStatusBarPhoneStatusBar,TabletStatusBarなど***のサブクラスは、基本的にViewからサブクラス化された複数のクラスを扱います(ステータスバーの描画も同様です)。onDraw()メソッドで行われます。事実にもかかわらず、ステータスバー(およびソフトウェアのナビゲーションバー)ブートシステム上のランチャーまで表示されませんActivity年代(android.intent.category.HOME付き1)onResume()メソッドの戻り(とbootanimation出る)すべて:
  • 重要な注意ステータスバーが構成されているビューは既にレイアウトされています。

AOSP
* フレームワーク/ベース/サービス/ javaの/ COM /アンドロイド/サーバー/
** フレームワーク/ベース/パッケージ/ SystemUI/SRC/COM /アンドロイド/systemui/SystemUIService.java
*** フレームワーク/ベース/パッケージ/ systemUI/SRC/COM /アンドロイド/ systemui /ステータスバー/

1

SystemUIは、最初に起動するアプリの1つです。 Lockscreen、Notifications、Statusbar、または最近のアプリビューのようなものはすべてSystemUIの一部です。だからあなたのランチャーが起動する前にSystemUIが起動する

関連する問題