• SystemUI-导航栏-home键上推后出现search的过程


    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在后面会用到的。

  • 相关阅读:
    PHP中无限分类、无限回复评论盖楼的实现方法,thinkphp5.0无限分类实例
    PHP中session详解
    使用thinkPHP做注册程序的实例
    虾米盒子系统开发APP
    angular 使用base64密码加密
    开发中遇到的两种表格文本长度处理,即长文本截断
    树组件使用文件夹图标
    angular实现指定DIV全屏
    JS调用浏览器打印机
    使用blob二进制流的方式下载后台文件
  • 原文地址:https://www.cnblogs.com/jiangye/p/3337016.html
Copyright © 2020-2023  润新知