android的StatusBarMangerService和StatusBarService有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的StatusBarMangerService和StatusBarService有啥区别相关的知识,希望对你有一定的参考价值。

参考技术A 最近看了下,Android statusbar的代码。

整体结构如下:

* 系统statusbarService的启动

1 开机流程中,注册服务:

Slog.i(TAG, "Status Bar");
statusBar = new StatusBarManagerService(context);
ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar);

其中,StatusBarManagerService构造函数中,初始化了可显示的icon类别。

mIcons.defineSlots(res.getStringArray(com.android.internal.R.array.config_statusBarIcons));

2 然后启动服务:

if (statusBar != null)
statusBar.systemReady(); //此处do nothing


3 然后注册,当activity manager OK时,运行的Applications initial代码。

((ActivityManagerService)ActivityManagerNative.getDefault())
.systemReady(new Runnable()
public void run()

      ......

      if (statusBarF != null) statusBarF.systemReady2();

      ......



4 systemReady2() StatusBarManagerService.java

ComponentName cn = ComponentName.unflattenFromString(
mContext.getString(com.android.internal.R.string.config_statusBarComponent));
Intent intent = new Intent();
intent.setComponent(cn);
Slog.i(TAG, "Starting service: " + cn);
mContext.startService(intent);

com.android.internal.R.string.config_statusBarComponent为“com.android.systemui/com.android.systemui.statusbar.StatusBarService”,即启动com.android.systemui.statusbar.StatusBarService服务。

* 应用StatusbarService的启动

OnCreate中

mCommandQueue = new CommandQueue(this, iconList);
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
try
mBarService.registerStatusBar(mCommandQueue, iconList, notificationKeys, notifications);
catch (RemoteException ex)
// If the system process isn't there we're doomed anyway.


1生成CommandQueue对象,并将StatusbarService中的CommandQueue.Callbacks接口和iconList注册到mCommandQueue

2CommandQueue继承于IStatusBar.Stub。

3registerStatusBar将mCommandQueue注册到"Status Bar"服务,并根据StatusBarManagerService定义的icon类别初始化iconList, notificationKeys, notifications。

于是,"Status Bar"系统服务,就可以通过调用应用程序的StatusbarService中的CommandQueue.Callbacks接口功能。

*Statusbar 系列icon显示策略,在StatusBarPolicy中

mIconPolicy = new StatusBarPolicy(this);本回答被提问者和网友采纳

Android工程师的概述

参考技术A

主要包括:Android应用软件开发工程师、Android游戏程序员、Android网络游戏程序员、Android软件移植工程师、Android嵌入式设备软件开发工程师、Android游戏开发工程师、Android网络游戏开发工程师等。 1、熟悉java开发,有丰富的Java项目开发经验;
2、有嵌入式消费类产品应用程序、UI开发经验者优先;
3、具有Android开发经验;
4、熟悉TCP/IP/http通信协议及原理;
5、熟悉android sdk各版本之间的差异;
6、有丰富的项目开发经验,能独立承担开发任务。 1)Android体系结构和开发环境
2)Android开发原理和项目介绍
3)Android核心组件
4)Android UI设计
5)Android数据存储
6)Android图形图像和多媒体技术
7)Android开发调试技术
8)Android高级开发功能
9)Android商业项目实战 Android手机软件研发工程师
Android手机游戏开发工程师
Android手机游戏策划师
Android手机游戏移植工程师
Android测试工程师
Android架构师
Android系统UI设计师
Android高级软件开发工程师 Android在中国的发展
Android在中国的前景十分广阔,首先是有成熟的消费者,在国内,Android社区十分红火,这些社区为Android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了Android阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同时不仅仅局限于手机,国内厂家也陆续推出了采用Android系统的MID产品,比较著名的包括由Rockchip和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7和2010年推出的原道N5,我们可以预见Android也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid系统的应用范围。另一方面,由于国内政策的限制,导致Android的部分功能(如Android market)在国内无法正常使用,常用的解决方法是使用VPN服务来访问。
Android的就业前景和行业需求
随着移动互联网的到来和迅猛发展,移动互联网开发人员的需求也是与日俱增。比如说android市场,国外Android市场正在如日中天的扩展,据市场研究公司IDC2012年发布研究报告称,预计中国智能手机市场在全球市场上所占份额将会从2011年的18.3%上升至26.5%,而2012年美国市场所占份额则将从21.3%下降至17.8%。相信在不久的将来会有更多的用户选择Android系统的手机或是无线终端设备。
目前中国拥有世界上最大的手机用户群,再加上3G的推出对整个行业的巨大推动作用,全世界所有大中小型手机制造商几乎都在招聘Android工程师。然而每天有超过16万台的Android设备出货,一年后全球可能会有超过1亿台的Android设备,以后将超越iphone成为智能手机平台的旗舰。
随着Android平台的扩张,引发了Android人才荒,2011年移动开发人才需求几十万,未来人才需求缺口将达百万。3G人才全球紧缺,实用人才培养已迫在眉睫。在国内三大运营商如火如荼的3G营销战持续升温,再加上3G的推出对整个行业的巨大推动作用,无疑将引爆3G手机开发工程师这个黄金职位。但符合条件的Android工程师屈指可数,在未来几年内,Android开发工程师将成为3G行业炙手可热的岗位之一。

以上是关于android的StatusBarMangerService和StatusBarService有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Android游戏开发大全的目录

转Android开发学习总结——搭建最新版本的Android开发环境

Android工程师的概述

Android中常见的权限

Android各个版本的介绍

Android Studio查看Android源码报红