我是靠谱客的博主 大意橘子,最近开发中收集的这篇文章主要介绍android 6.0 关于SystemUI 的启动流程浅析(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        SystemUI一直都是andorid系统中重要的组成部分,针对它的分析网上例子也非常多,但主要是较早期版本。目前工作中经常遇到关于的它内容,于是就对它的流程做一个浅要分析,作为自己学习的心得体会。以下内容针对的是6.0系统。关于SystemUI里面细节知识点非常多,无法将所有内容分析到位,不足之处还请指正。      

       SystemUI中包含状态栏(StatusBar)和导航栏(NavigationBar)。状态栏中主要用来显示信号,蓝牙标志,Wifi信息,由于状态栏需要实时反馈系统的状态给用户,所以它必须常驻系统内存中。Andriod中能够长期存在的只有服务(service),所以SystemUI也是有服务管理。

         在andorid系统中SystemUI是由SystemUIService启动的,而SystemUIService又是SystemServer启动的。当android系统初始化完成后,SystemServer就会被启动。关于代码路径位于:frameworks/base/packages/SystemUI

         现在来分析SystemUI的启动流程:

         如上所述,通过SystemServer来启动SystemUIService

源码地址:

frameworks/base/services/java/com/android/server/SystemServer.java

    /**

    *调用该程序的入口

    */

    public static void main(String[] args) {

       new SystemServer().run();

    }

    private void run() {

   //Start services.

   startBootstrapServices();

       startCoreServices();

       startOtherServices();

   。。。。。

    }

    //SystemServer加载时,通过该静态方法启动SystemUIService服务;

   static final void startSystemUi(Context context) {

        Intent intent= new Intent();

        intent.setComponent(newComponentName("com.android.systemui",

         "com.android.systemui.SystemUIService"));

         //Slog.d(TAG,"Starting service: " + intent);

        context.startServiceAsUser(intent,UserHandle.OWNER);

    }

源码地址:

frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUIService.java

     //SystemUIService启动完成后,就会执行startServicesIfNeeded();

     @Override

     public void onCreate() {

        super.onCreate();

        ((SystemUIApplication)getApplication()).startServicesIfNeeded();

     }

     //在这个方法中,就会启动所有的在SystemUI中需要启动的服务;

     public void startServicesIfNeeded() {

          //开始启动里面继承SystemUIservices

    //KeyguardViewMediator

    //Recents

    //VolumeUI

    //SystemBars

    //StorageNotification

    //PowerUI

    //RingtonePlayer

    mServices[i].start();

     }

       

最后

以上就是大意橘子为你收集整理的android 6.0 关于SystemUI 的启动流程浅析(一)的全部内容,希望文章能够帮你解决android 6.0 关于SystemUI 的启动流程浅析(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部