1.PhoneStatusBar.java中的prepareNavigationBarView 函数中
mNavigationBarView.setListener(mRecentsClickListener,mRecentsPreloadOnTouchListener, mHomeSearchActionListener);
注册mHomeSearchActionListener 去 showSearchPanel();
2.SearchPanelView.java 中
class GlowPadTriggerListener implements GlowPadView.OnTriggerListener {
public void onTrigger(View v, final int target) {
final int resId = mGlowPadView.getResourceIdForTarget(target);
mActionTarget.launchAction(mTargetActivities[target – mStartPosOffset]);
}
}
其中 ActionTarget.launchAction 通过log得知是ACTION_ASSIST
public boolean launchAction(String action) {
try {
ActivityManagerNative.getDefault().dismissKeyguardOnNextActivity();
} catch (RemoteException e) {
// ignored
}全职高手www.wo-cn.com/quanzhigaoshou
if (action.equals(ACTION_ASSIST)) {
Intent intent = new Intent(Intent.ACTION_ASSIST);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
return true;
}
}
Android的启动分为内核启动、Android启动、launcher启动,我们的SystemServer就处于Android启动中,以下是大致流程图:
init->ServiceManager->Zygote->SystemServer->… …
在SystemServer中,初始化了Android系统中的Java层服务,如PowerManagerService、WindowManagerService等等,当然也包括了SystemUIService,它们通过ServiceManager的addService()方法,添加到ServiceManager的管理中。实际上,根据后面的分析这里add了一个很重要的StatusBarManagerService。这个Service在后面会用到的。