您的位置:首页 > 其它

Activity启动流程概要

2017-09-21 08:57 330 查看
A-->B解析Activity,做了一些错误的校验,启动模式 SingleTop SingleTask ,A的onPause()方法

B利用反射创建activity实例,创建Context,attach 数据,OnCreate() OnStart() OnResume()

1.Hook IActivityManager 代理Activity过去

2.ActivityThread handleRelaunchActivity

==================================================================================

A------>B

=========================================Activity

startActivity(Intent intent)

startActivity(intent, null);

startActivityForResult(intent, -1, options);

======================================Instrumentation 这个类将为您实例化在任何应用程序代码之前,允许您监视所有的代码系统与应用程序的交互

mInstrumentation.execStartActivity

ActivityManagerNative.getDefault().startActivity

=================================== ActivityManagerService

startActivityAsUser

mActivityStarter.startActivityMayWait

============================================================================ActivityStarter

锁定 权限 启动方式验证

startActivityLocked

err 得到错误

err = startActivityUnchecked

mSupervisor.resumeFocusedStackTopActivityLocked

============================================================================ActivityStackSupervisor

targetStack.resumeTopActivityUncheckedLocked

===========================================================================ActivityStack

resumeTopActivityInnerLocked

startSpecificActivityLocked

pausing = mStackSupervisor.pauseBackStacks

startPausingLocked

prev.app.thread.schedulePauseActivity

===========================================================================ActivityThread

sendMessage //发送消息

PAUSE_ACTIVITY //标识

handlePauseActivity //处理消息

performPauseActivity(token, finished, r.isPreHoneycomb(), "handlePauseActivity");

performPauseActivityIfNeeded(ActivityClientRecord r, String reason)

mInstrumentation.callActivityOnPause(r.activity);

activity.performPause();

onPause();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: