美文网首页Android FrameWork 学习
8 启动黑白屏的由来

8 启动黑白屏的由来

作者: Tsm_2020 | 来源:发表于2023-08-23 21:46 被阅读0次

所有代码都是Android 11

在没有分析这个问题之前,一直都觉得这个启动的黑白屏是由lancher 在启动过程中被启动的 app 相应的这个黑白屏,但是经过一段时间的源码阅读发现并不是这个样子的,这里面有一个比较有意思的地方, 我在 FrameWork 系列 的第六篇文章 (6.ActivityManagerService(四)App启动流程AppThread 创建)]中有提到过SystemServer 进程在创建后,他会创建一个 自己创建一个 Context 对象,同时绑定了Theme 等属性,一开始一直不了解他用这个context 干什么,今天在面试过程中有人问到我这个问题,真的是突然就想到了这个黑白屏的由来,就与SystemServer 这个context 的有关

下面我来分析一下这个黑白屏的创建过程 , 他创建的时机是在 ActivityStarter 组件 启动 activity 的flag 数据之后,

启动事件流转过程
Activity.startActivity()// TODO app 进程
  --> Instrumentation.execStartActivity()// app 进程
        --> ActivityTaskManagerService.startActivity() // TODO  注意 此时已经离开了app 进程,来到了SystemServer 进程
              --> ActivityStart.execute()-->//TODO SystemServer 进程
                    -->ActivityStart.executeRequest()//TODO SystemServer 进程
                         -->ActivityStarter.startActivityUnchecked()//TODO SystemServer 进程
                                --> ActivityStarter.startActivityInner()//TODO SystemServer 进程
                                 mTargetStack.startActivityLocked(mStartActivity,
              topStack != null ? topStack.getTopNonFinishingActivity() : null, newTask,
              mKeepCurTransition, mOptions);

到了这里intent 的 flag 的数据准备阶段已经完成了,但是还有没有fork进程,只是判断了进程的状态,判断了窗口的状态,判断了ActivityRecord 的状态 ,判断了Task 的状态,
我们接下来在看看 这个黑白屏是由谁来创建的

ActivityStarter.startActivityInner()
    -->ActivityStack.startActivityLocked()
          --->ActivityRecord.showStartingWindow()
                    -->ActivityRecord.addStartingWindow()
                          -->ActivityRecord.createSnapshot()
                                -->创建TaskSnapshotSurface
                                      --> 绘制

这里整个流程答题就是这样,但是最后获取这个application 的信息化应该是从PackagerManagerService 中获取的,但是具体的流程我这边没有看到过,这里就先记录这些,记录这个流程也只是让自己加深一下印象, 这个黑白屏的信息并不是被启动的进程创建的,而是 ATMS 在组装数据完成后,发现需要启动进程而创建的

相关文章

  • 【技巧】ionic3优雅解决启动前、后黑白屏问题

    这里只说明androd和ios的情况。 1、启动前黑白屏 启动前黑白屏问题,仅存在于android,是androi...

  • Android冷启动白屏黑屏处理

    一、冷启动会有黑白屏现原因Android冷启动黑白屏现象其实是因为activity的window背景颜色二、解决办...

  • 安卓性能优化第一步-App启动优化详解

    开机启动流程,黑白屏 当App启动的时候用户会先看到白色或黑色屏幕再跳转到具体的Activity称之为“黑白屏”原...

  • 了解黑白屏并解决

    1、首先了解黑白屏的产生 1、黑白屏是Google 为了体现快速响应的效果,在启动App的时候,会先启动一个空的界...

  • Android 性能优化,学习总结

    1 . APP启动相关优化 1. 黑白屏 首先谈到黑白屏对于有些人可能会一脸懵逼,这是啥! 咋出来的.黑白屏是在我...

  • App白屏和启动优化的一些思路

    App启动优化 App启动优化原理与技术方案 启动优化 黑白屏问题 启动页面主题设置为图片 启动页面,不要再onC...

  • App 启动 优化

    技术点: 1、传说中的黑白屏问题优化 2、黑白屏在商业App中的价值 3、App启动流程 4、如何使用Tracev...

  • Android 启动黑白屏

    现象 App启动时进入启动页时出现白屏页,然后大概一秒之后就出现了背景图片。 原因 用户点击Launcher界面的...

  • App启动优化

    1.操作系统启动流程和Launcher点击事件流程2.启动方式以及首次启动3.黑白屏优化4.启动时间内代码优化 操...

  • Android 启动优化

    Android 启动优化 基本操作 将启动页主题背景设置成闪屏页图片这么做的目的主要是为了消除启动时的黑白屏,给用...

网友评论

    本文标题:8 启动黑白屏的由来

    本文链接:https://www.haomeiwen.com/subject/qwzpmdtx.html