android 5.1 TelecomService启动过程
2016-01-19 10:23
375 查看
1. 在SystemServer.java启动流程中,有如下代码:
mSystemServiceManager.startService(TelecomLoaderService.class);
2.在TelecomLoaderService.java中,开机过程,onBootPhase函数将会被调用:
<pre name="code" class="java"> @Overridepublic void onBootPhase(int phase) {if (phase == PHASE_ACTIVITY_MANAGER_READY) {connectToTelecom();}}private void connectToTelecom() {if (mServiceConnection != null) {// TODO: Is unbinding worth doing or wait for system to rebind?mContext.unbindService(mServiceConnection);mServiceConnection = null;}TelecomServiceConnection serviceConnection = new TelecomServiceConnection();Intent intent = new Intent(SERVICE_ACTION);intent.setComponent(SERVICE_COMPONENT);int flags = Context.BIND_IMPORTANT | Context.BIND_AUTO_CREATE;// Bind to Telecom and register the serviceif (mContext.bindServiceAsUser(intent, serviceConnection, flags, UserHandle.OWNER)) {mServiceConnection = serviceConnection;}}
bind绑定到Telecom服务,并在<span style="font-family: Arial, Helvetica, sans-serif;">ServiceManager</span><span style="font-family: Arial, Helvetica, sans-serif;">中注册Telecom服务,方便调用:</span><pre name="code" class="java">
<span style="white-space:pre"> </span>@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// Normally, we would listen for death here, but since telecom runs in the same process// as this loader (process="system") thats redundant here.try {service.linkToDeath(new IBinder.DeathRecipient() {@Overridepublic void binderDied() {connectToTelecom();}}, 0);ServiceManager.addService(Context.TELECOM_SERVICE, service);} catch (RemoteException e) {Slog.w(TAG, "Failed linking to death.");}}@Overridepublic void onServiceDisconnected(ComponentName name) {connectToTelecom();}到此,Telecom服务已经启动完成并注册
相关文章推荐
- WHY TELECOM FIELD ENGINEERS NEED TO ACCEPT FREELANCE LIFE
- WHY TELECOM FIELD ENGINEERS NEED TO ACCEPT FREELANCE LIFE
- Telecom服务
- Telcom系统
- Android TelecomService的来电处理过程
- Android 系统服务TelecomService启动过程分析
- Telecom指令源码
- Telecom - 002 - CallsManager
- (O)Telephony分析之通话流程分析(一) TelecomManager的getTelecomService方法解析
- Tele AT Command List
- Android Google Map学习一(获取最近一次的位置)
- Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上
- Android高德地图开发(2)——地图显示+自定义控件
- Android Studio 操作基础
- Android XListView实现原理讲解及分析
- Android:Moring-早安闹钟开发过程记录(二)
- 认识Android中的Fragment
- android之视频播放
- Android Volley入门到精通:初识Volley的基本用法(示例,出错代码)
- 魅族note(电信版)缩略图显示不正确问题