Activity页面的绘制流程,内含福利

//省略部分代码

final ActivityClientRecord r = mActivities.get(token);

//省略部分代码

//调用Activity的performResume方法

r.activity.performResume(r.startsNotResumed, reason);

return r;

}

final void performResume(boolean followedByPause, String reason) {

//省略部分代码

//调用Instrumentation的callActivityOnResume方法

mInstrumentation.callActivityOnResume(this);

//省略部分代码

}

public void callActivityOnResume(Activity activity) {

activity.mResumed = true;

//调用Activity的onResume

activity.onResume();

if (mActivityMonitors != null) {

synchronized (mSync) {

final int N = mActivityMonitors.size();

for (int i=0; i<N; i++) {

final ActivityMonitor am = mActivityMonitors.get(i);

am.match(activity, activity, activity.getIntent());

}

}

}

}

上面我们跟了一下performResumeActivity的源码,发现最后调用了Activity的onResume,由此我们可以知道在注释一的时候,Activity的onResume方法其实已经执行完成了,但是我们的界面绘制还没有开始呢,印证了我们开头说的。

2.下面我们来看看注释2这个wm到底是个什么东西呢,看看它的具体实现类是什么。

//Activity的getWindowManager方法

public WindowManager getWindowManager() {

return mWindowManager;

}

//mWindowManager是在Activity的attach方法中被创建的

//这个方法是handleResumeActivity前执行的分析启动流程的时候我们会说到

final void attach(Context context, ActivityThread aThread,

Instrumentation instr, IBinder token, int ident,

Application application, Intent intent, ActivityInfo info,

CharSequence title, Activity parent, String id,

NonConfigurationInstances lastNonConfigurationInstances,

Configuration config, String referrer, IVoiceInteractor voiceInteractor,

Window window) {

//调用setWindowManager方法

mWindow.setWindowManager(

(WindowManager)context.getSystemService(Context.WINDOW_SERVICE),

mToken, mComponent.flattenToString(),

(info.flags & ActivityInfo.FLAG_HARDWARE_ACCELERATED) != 0);

if (mParent != null) {

mWindow.setContainer(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值