Android 4.0 ICS SystemUI浅析——SystemUI启动流程


       阅读Android 4.0源码也有一段时间了,这次是针对SystemUI的一个学习过程。本文只是对SystemUI分析的一个开始——启动流程的分析,网上有很多关于2.3的SystemUI的分析,可4.0与2.3的差别还是很大的,为了给自己留下笔记同时也方便大家学习和探讨,遂写此文,后续将有更多关于SystemUI的分析,敬请关注。

       转载请注明出处:http://blog.csdn.net/yihongyuelan

       1.初始SystemUI

       什么是SystemUI?你或许会觉得这个问题很幼稚,界面上的布局UI显示?系统的UI?如果你是这么想的,那么就大错特错了。我们知道Android 4.0 ICS同时适用于Phone和Tablet(TV),因此,对于Phone来说SystemUI指的是:StatusBar(状态栏)、NavigationBar(导航栏)。而对于Tablet或者是TV来说SystemUI指的是:CombinedBar(包括了StatusBar和NavigationBar)。注:关于Android 4.0的UI介绍请参考这篇文章。

       根据上面的介绍,我想大家应该知道SystemUI的具体作用了吧!也就是说我们的Phone的信号,蓝牙标志,Wifi标志等等这些状态显示标志都会在StatusBar上显示。当我们的设备开机后,首先需要给用户呈现的就是各种界面同时也包括了我们的SystemUI,因此对于整个Android系统来说,SystemUI都有举足轻重的作用,那接下来就来看看它的启动流程吧!

       2.启动流程

       这里只是单单的分析启动流程,实际上SystemUI启动过程中涉及到很多东西的调用,这里暂时不分支去介绍,后续会有相关文章的详细分析。那么对于这种分析我还是将自己的分析思路写出来,而不是直接展现已经分析好的结果,当然结果会在最后展示出来。这样做一方面有利于锻炼自己的分析能力,另一方面各位看官也可以找出分析中的利与弊从而更好的取舍。

       首先来看看SystemUI的代码位置,路径:SourceCode/frameworks/base/packages/SystemUI;其次看看它的代码梗概:

Android 4.0 ICS SystemUI浅析——SystemUI启动流程_第1张图片

图 2.1

      在Android 4.0中,Google整合了Phone和Tablet(TV)的SystemUI,也就说可以根据设备的类型自动匹配相应的SystemUI。这一点是在Android 2.3中是没有的。那么接下来怎么分析呢?打开AndroidManifest.xml可以看到:

[html]  view plain copy
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.         package="com.android.systemui"  
  3.         coreApp="true"  
  4.         android:sharedUserId="android.uid.system"  
  5.         android:process="system"  
  6.         >  
  7.   
  8.     <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />  
  9.     <uses-permission android:name="android.permission.BLUETOOTH" />  
  10.     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />  
  11.     <uses-permission android:name="android.permission.GET_TASKS" />  
  12.     <uses-permission android:name="android.permission.MANAGE_USB" />  
  13.   
  14.     <application  
  15.         android:persistent="true"  
  16.         android:allowClearUserData="false"  
  17.         android:allowBackup="false"  
  18.         android:hardwareAccelerated="true"  
  19.         android:label="@string/app_label"  
  20.         android:icon="@drawable/ic_launcher_settings">  
  21.   
  22.         

你可能感兴趣的:(Android)