Status bar是launcher主界面上面提示当前状态(电池,网络,蓝牙等等)的一个栏。
本文以它的功能为框架进行分析(android 2.2)。

一. 功能概述
1. Status icon显示 
2. Notification(比如有短信时,会在上面提示)


二. 主要涉及文件
主体文件在frameworks/base/services/java/com/android/server/status下

 

三. 主要功能描述
  system server启动时,new 一个statusbarService,并在service manager中注册。
  statusbarservice继承自Istatusbar,其主要methods为
interface IStatusBar
{
    void activate();
    void deactivate();
    void toggle();
    void disable(int what, IBinder token, String pkg);
    IBinder addIcon(String slot, String iconPackage, int iconId, int iconLevel);
    void updateIcon(IBinder key, String slot, String iconPackage, int iconId, int iconLevel);
    void removeIcon(IBinder key);
}

而客户端则借助于statusbarmanager(frameworks/base/core/java/android/app)对statusbar进行访问。不过statusbarmanger没有继承自Istatusbar,其实现的methods为
disable, collapse(实际为service中的deactivate), expand(实际是service中的activate), toggle,addicon, updateicon, removeicon。所以statusbarmanager确实完成了一般的proxy的任务


有几篇文章写得不错
http://blog.csdn.net/stonecao/article/details/6642727

------------------------------------------------------------------以下是2.35版本上的分析-------------------------------------------------------

2.3.5与2.2的status bar差别巨大,新加了很多东西。

有两个interface,分别为Istatusbar和IstatusbarService。 Systemserver会首先new一个继承自Istatusbarservice.stub的statusbarManagerService,这个东东在systemready2中会启动statusbarservice。而statusbarservice会向statusbarmanagerservice注册它自身,这样manager就能用到其功能。statusbarservice继承于service,因此会有onCreate, onBind等等service特性,并且实现了Commandqueue.callbacks。而它自身又持有commandqueue实例,commandqueue其实又继承Istatusbar.stub 。。。是不是晕了。。。有好心人画张关系图给我哈,懒得搞了。。。
在statusbarservice的oncreate中,有makeStatusbarView生成整个statusbar框架,最后调用new statusbarpolicy进行初始icon的绘制。
首先会通过context.getSystemService(在contextimpl中实现)new一个statusbarmanager实例(又一个新名字。。。我只能说,shit,谷歌你命名太乱了),这个东东其实就是给statusbarmanagerservice包了一层(在new时通过servicemanager获得binder,并asInterface)

可以显示的图标定义: frameworks/base/core/res/res/values/config.xml
status bar的高度字体:frameworks/base/core/res/res/values/dimens.xml

待续


  

更多相关文章

  1. Android(安卓)2.3.3 NFC分析
  2. Android(安卓)最火的快速开发框架androidannotations配置详解
  3. Android快速集成框架:MVP+Dagger+主流框架
  4. Android(安卓)中的ORM框架
  5. Android(安卓)锁屏功能
  6. Android(安卓)greenDao开源数据库框架
  7. Android(安卓)Hook神器:XPosed入门与登陆劫持演示
  8. Android开发之旅: Intents和Intent Filters(实例部分) - 吴秦 - 博
  9. 在android中使用OrmLite数据库框架

随机推荐

  1. Android的内存优化方法
  2. Android Service相关知识
  3. VC++实现android的Toast消息框的功能
  4. Android(安卓)使用librtmp推流【音频采集
  5. Freescale IMX6 Android (4): 基于TQIMX6
  6. android中共享全局数据的方法
  7. Android NDK开发技巧一
  8. Android身份证件识别的OCR技术SDK
  9. Android触摸屏驱动屏幕翻转
  10. android常用调试工具fiddle、wireshark和