-
Activity.startActivity => startActivityForResult
-
Instrumentation.execStartActivity
-
ActivityTaskManager.startActivity
-
ActivityTaskManagerService.startActivity => startActivityAsUser
-
ActivityStarter.execute => executeRequest => startActivityUnchecked => startActivityInner
-
RootWindowContainer.resumeFocusedStacksTopActivities
-
ActivityStack.resumeTopActivityUncheckedLocked => resumeTopActivityInnerLocked
resumeTopActivityInnerLocked{ if (next.attachedToProcess()) {//Activity已经启动过,直接显示 final ClientTransaction transaction = ClientTransaction.obtain(next.app.getThread(), next.appToken); //ResumeActivityItem用于后面执行handleResumeActivity操作 transaction.setLifecycleStateRequest( ResumeActivityItem.obtain(next.app.getReportedProcState(), dc.isNextTransitionForward())); mAtmService.getLifecycleManager().scheduleTransaction(transaction); } else {//第一次启动 mStackSupervisor.startSpecificActivity(next, true, true); } }
-
ActivityStackSupervisor.startSpecificActivity => realStartActivityLocked
realStartActivityLocked{ final ClientTransaction clientTransaction = ClientTransaction.obtain( proc.getThread(), r.appToken); //LaunchActivityItem用于后面执行handleLaunchActivity操作 clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent), if (andResume) {//ResumeActivityItem用于后面执行handleResumeActivity操作 lifecycleItem = ResumeActivityItem.obtain(dc.isNextTransitionForward()); } clientTransaction.setLifecycleStateRequest(lifecycleItem); mService.getLifecycleManager().scheduleTransaction(clientTransaction); }
-
ClientLifecycleManager.scheduleTransaction
-
ClientTransaction.schedule
-
ActivityThread.ApplicationThread.scheduleTransaction
-
ActivityThread.scheduleTransaction(ActivityThread父类ClientTransactionHandler的方法)
-
ActivityThread.H.EXECUTE_TRANSACTION
-
TransactionExecutor.execute => executeCallbacks => executeLifecycleState(ResumeActivityItem.execute执行handleResumeActivity操作)
executeCallbacks{ final List<ClientTransactionItem> callbacks = transaction.getCallbacks(); final int size = callbacks.size(); for (int i = 0; i < size; ++i) { final ClientTransactionItem item = callbacks.get(i); item.execute(mTransactionHandler, token, mPendingActions); } } executeLifecycleState{ final ActivityLifecycleItem lifecycleItem = transaction.getLifecycleStateRequest(); lifecycleItem.execute(mTransactionHandler, token, mPendingActions); }
-
LaunchActivityItem.execute
execute(ClientTransactionHandler client, IBinder token, PendingTransactionActions pendingActions) { client.handleLaunchActivity(r, pendingActions, null /* customIntent */); }
-
ResumeActivityItem.execute
execute(ClientTransactionHandler client, IBinder token, PendingTransactionActions pendingActions) { client.handleResumeActivity(token, true /* finalStateRequest */, mIsForward, "RESUME_ACTIVITY"); }
-
ClientTransactionHandler(ActivityThread实现).handleLaunchActivity => performLaunchActivity
-
Instrumentation.newActivity => callActivityOnCreate
-
Activity.performCreate => onCreate
Android11(30) Activity启动过程时序图
最新推荐文章于 2024-07-10 17:50:19 发布