美文网首页
Activity onStart()之后到底可不可见?

Activity onStart()之后到底可不可见?

作者: 虚无方向 | 来源:发表于2020-05-21 17:12 被阅读0次

Activity onStart()之后到底可不可见?

Activity onStart()之后到底可不可见,这个问题相信大多数初学者都看过网上帖子,大多都是说, onstart表示Activity可见,但是还不能与用户进行交互, onResume表示此时Activity从后台切换到前台,可以与用户进行交互。

对于这个问题,我看了源码之后其实说的也没有错,但是过于片面。

首先,你的了解些Activity正在绘制流程,这里网上很多我就不多写了 ,引用两篇文章,大家可以参考下源码看。

安卓应用启动流程(从点击Launcher图标开始) - 简书

View绘制流程—performResumeActivity—>performTraversals_移动开发_点滴积累-CSDN博客

上面两篇文章大家看完,并对面源码,你会发现确实是这样,view绘制的起点就是从onResme开始的,难道网上都说错了onStart就是不可见吗?

其实大家翻看源码就会发现

在调用ActivityThread调用handleResumeActivity之前还调用了,handleStartActivity,

代码片段

这是设置activity的状态为onStart,我们注意下 activity.performStart("handleStartActivity");

接下来看看activity.performStart干了啥

final void performStart(String reason) {

        .....伪代码.....

        mActivityTransitionState.enterReady(this);

}

在这个方法的末尾,掉了enterReady,上代码

看到这里,我相信我不需要多说什么了,

总结:

1.在创建一个没有启动的Activity的时候,onStart,之后activity 是不可见的,onResume之后activity才可见

2.对于一个已经创建了的activity重新走生命周期(如从别的页面返回,从后台返回),onStart就可见了,但是不可交互,就是还没有获取焦点,onResume获取焦点

相关文章

网友评论

      本文标题:Activity onStart()之后到底可不可见?

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