Activity 启动流程至view绘制到屏幕显示

本文详细解析了Android中Activity从启动到View绘制并显示到屏幕的过程,包括从setContentView到视图层级的创建,再到Choreographer与ViewRootImpl的角色,以及如何解决启动时的黑屏问题。通过分析源码,揭示了Activity启动、页面绘制以及显示的内部机制。
摘要由CSDN通过智能技术生成

Activity 启动 至 view绘制 至 屏幕显示

实际效果:Activity冷启动的时候会闪黑屏,就是A启动B,这个过程中会闪黑屏,虽然网上说可以设置一个闪屏页,中间有个过渡效果,或者设置B为透明主题,这样在启动的时候就看不到黑屏了。只是感觉启动B的这个过程漫长而已,又比如说你从桌面启动A,你把A设为透明,你就会感觉你点击A之后半天没反应没启动起来,实际是有反应的哇,因为你设置的透明,所以A在启动的时候刚开始显示的透明也就是看到了桌面。这里的闪黑屏是没办法的,因为启动activty也是需要时间,安卓系统就是这样的。

我们的需求:,先启动一个系统dialog,之后启动一个activty,同时吧系统dialog消失掉,如果在activty的onResume()中消失掉系统dialog,就会闪桌面,然后才看到activity启动起来,这是因为在onResume()的时候activty并不在前台可见,你把系统dialog消失掉当然就看到桌面了,实验证明在onResume()中延时2秒再消失dialog就无缝切换了,延时不是可靠的方法,而我需要做的就是如何把不可靠变可靠,也就是知道什么时候activity的页面被添加至屏幕了。

  • 先从Activity的oncreated开始,setContentView中的view就是activty的页面
    图一
    第一步:点击setContentView方法看其调用
    图2
    第二步:再点击 setContentView 到了window这类里的setContentView方法,可惜是抽象的
    图3
    第三步:咋们找到它的子类也就是实现类查看,看这个方法到底怎么实现的
    图4
    第四步:找到它的setContentView方法
    图5
    第五步:接下来咋们关注mContentParent就ok了,我们的目的是知道mContentPa
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值