android Launcher那点事儿

本文介绍了Android Launcher的工作原理,从为什么、做什么、怎么做三个方面展开,强调学习过程中的心态和方法。作者讨论了Launcher作为Android系统的"脸面",并从SystemServer的systemReady方法入手,分析了ActivityManagerService的启动过程,如何启动Launcher,以及在Launcher内部如何加载和绑定所有应用。文章旨在以平易近人的语言解释复杂的技术概念。
摘要由CSDN通过智能技术生成

    今天讲关于Launcher的事情,但讲之前我想先说说我自己。

    首先说一下学东西,以前我很害怕别人问我问题,因为我怕自己不会,回答不上来那多丢人啊,但现在我不这么想了,因为别人问你问题的时候也会想,我问这个问是不是很傻比啊,问一个傻逼的问题多丢人啊,其实大家心里都一样,都有一种恐惧心里,恐惧是什么,恐惧是来自对未知事物的不了解,当了解了一个事物,就不会感到害怕与恐慌。所以现在自己敢去面对以前总是逃避的问题,也敢对别人说“不知道”,知之为知之,不知为不知嘛,进而自己得出这么个结论,学习某个东西的时候是靠一个人的能力,学会了就是熟能生巧的问题了。不知道没什么可丢人,也没什么可恐慌的。

    接下来再给大家说说给别人讲东西,给人讲解东西有三种方法,一种是从为什么讲起,一种是从做什么讲起,一种是从怎么做讲起,我是第二种人,我这人喜欢从做什么讲起,不喜欢打哑谜,也就是直白,难听点就是二流子,就是一听他讲就觉着这人没水平,为什么我喜欢从做什么讲起呢?因为我觉着只有自己明白要做什么才能更有信心去做,明白了做什么,就会不自主的问自己我该怎么做?开始试探着做了才会问自己,我为什么要这么做?我觉着这才是顺利成章的事情。而喜欢从为什么讲起的人都是北斗型的人物,有能力,能控制场面,知识渊博,至于这种人有什么优点,有什么缺点,我就不讲解了。而喜欢从怎么做讲起的人那都是你的老师,三人行必有我“师”嘛,致敬吧。

    最后再说说我为什么要这么写android,当我遇到不会的问题,首先想到的就是去网上查阅一些资料,但是后来我发现网上对android的解析都是很深刻的纯技术剖析,读起来让人感觉相当的乏味,还不如自己琢磨,不知道大家是不是这个感觉,反正我刚学习android的时就是这感觉,对于某些文章都读不下去了,所以我写这些文章的时候不想这样,我觉着android所使用的java语言,当然也包括其他编程语言,他们都是一种语言,像汉语,英语等等一样,是一种可以交流的东西,应该是学起来很有趣的东西,我不喜欢写出的东西让别看后就一个感觉“虽然不知道在写什么,但是感觉很牛逼的样子”,这就失去了写作的很大的意义,更甚着,不是读很牛逼的文章就能衬托出自己很牛逼的样子。所以像我这种脑子不够灵活,嘴又笨的人都喜欢读《明朝那些事儿》不喜欢去读枯燥的历史教课书,因为我能力有限,只想做自己能做的事,写自己能写的东西,读自己能读懂的文章。

    言归正传,接下来我们学习Launcher,Launcher是什么?Launcher对于android来说就是一张脸,脸长的咋样,很可能决定一个人长的咋样,有人就会反驳了,说你这不是以貌取人吗?还有现在社会谁还看脸,都看身材的,对于第一个问题我的回答是,这不是以貌取人,这是以貌取机,对于第二个问题我的回答是别人身材再好也就她家老公知道,你能看见的也就是脸。靠,扯的有的远了。我们接着说Launcher,提起Launcher我们还是要从SystemServer说起,上一篇我们已经说过这个类是做什么的,这一篇就不再赘述,由于代码太多,我们就捡重点说,首先在systemReady中我们不难找到这么一句话

 context = ActivityManagerService.main(factoryTest);

通过上一篇中的名字分析法,我们很容易知道ActivityManagerService就是管理活动的服务,我们还可以猜测main是ActivityManagerService主函数,是用来做一些初始化工作的,那我们这样猜测对吗?我们还是进去看看

    public static final Context main(int factoryTest) {
        AThread thr = new AThread();
        thr.start();

        synchronized (thr) {
            while (thr.mService == null) {
                try {
                    thr.wait();
                } catch (InterruptedException e) {
                }
            }
        }

        ActivityManagerService m = thr.mService;
        mSelf = m;
        ActivityThread at = ActivityThread.systemMain();
        mSystemThread = at;
        Context context = at.getSystemContext();
        context.setTheme(android.R.style.Theme_Holo);
        m.mContext = context;
        m.mFactoryTest = factoryTest;
        m.mMainStack = new ActivityStack(m, context, true);
        
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值