android sevice系列之 StatusBarService

本文介绍了Android系统中状态栏的管理机制,主要涉及StatusBarPolicy和StatusBarService。StatusBarPolicy负责状态栏显示策略,监听并更新各种图标,如时间、电池、信号等。StatusBarService则实现状态栏的显示功能,通过StatusBarView来展示图标。要添加新的系统级图标,需要在arrays.xml中增加相应条目并更新StatusBarPolicy。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中做相应修改即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值