android sevice系列之 StatusBarService

来源:互联网 发布:网络控制器驱动安装 编辑:程序博客网 时间:2024/05/22 06:48

2011/3/21  23:56

 

Android状态栏管理
android的状态栏:

 

在android中,状态栏不属于某个应用程序,而是系统的一部分,是通过StatusBarService来管理的。

Android通过StatusBarPolicy及StatusBarService来管理状态栏。
一.    StatusBarPolicy 负责状态栏显示的策略管理
Android中状态栏上有很多图标,这些图标什么时候显示什么时候不显示?这些都是 StatusBarPolicy来管理的。
StatusBarPolicy的构造函数里初始化了好几个图标,如时间icon,闹钟icon,信号栏icon等。默认时有很多图标是不显示的,需要显示时再进行更新。StatusBarPolicy调用 registerReceiver注册了感兴趣的intent,当感兴趣的intent发生时,对图标进行更新。例如,设置一个闹钟后,闹钟模块会发出一个叫做Intent.ACTION_ALARM_CHANGED的intent,然后StatusBarPolicy接收到此intent,继而更新状态栏上的闹钟图标。
见如下的代码:

 

二.    StatusBarService
正如上面看到的,StatusBarPolicy只是一个策略管理,实际的功能是StatusBarService来实现的。StatusBarService初始化时初始化了一个用于显示statusbar 的StatusBarView。StatusBarView里面定义了icon名字,的显示顺序,对应的png图等。代码如下:

 

 

mRightIconSlots 是一个String型数组,里面记录了状态栏上各个图标的名字。StatusBarPolicy就是根据这个名字找到相应的icon,调用setIcon设置其图标。mRightIconSlots的值从/frameworks/base/core/res/res/values/arrays.xml 中获得,现摘取片段如下:

 

由此已经可以看出要增加一个系统级图标,应该在此xml中增加相应的item,然后在StatusBarPolicy中做相应修改即可。

原创粉丝点击