How is the Activity's onCreate method called?

How is the Activity's onCreate method called?

According to the introduction of the previous source code analysis, in Activitythe onCreatemethod, add the following log:

android.util.Log.i("wztest", "Activity onCreate", new Exception());

After recompilation, start a page of the contact, filter the log, and have the following output:

05-24 21:06:43.034  2159  2159 I wztest  : Activity onCreate
05-24 21:06:43.034  2159  2159 I wztest  : java.lang.Exception
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.Activity.onCreate(Activity.java:990)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:290)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
05-24 21:06:43.034  2159  2159 I wztest  : 	at com.android.contacts.activities.AppCompatTransactionSafeActivity.onCreate(AppCompatTransactionSafeActivity.java:33)
05-24 21:06:43.034  2159  2159 I wztest  : 	at com.android.contacts.AppCompatContactsActivity.onCreate(AppCompatContactsActivity.java:81)
05-24 21:06:43.034  2159  2159 I wztest  : 	at com.android.contacts.activities.PeopleActivity.onCreate(PeopleActivity.java:352)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.Activity.performCreate(Activity.java:7000)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.Activity.performCreate(Activity.java:6991)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.ActivityThread.-wrap11(Unknown Source:0)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.os.Handler.dispatchMessage(Handler.java:106)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.os.Looper.loop(Looper.java:164)
05-24 21:06:43.034  2159  2159 I wztest  : 	at android.app.ActivityThread.main(ActivityThread.java:6494)
05-24 21:06:43.034  2159  2159 I wztest  : 	at java.lang.reflect.Method.invoke(Native Method)
05-24 21:06:43.034  2159  2159 I wztest  : 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
05-24 21:06:43.034  2159  2159 I wztest  : 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

ActivityThreadHow is the handleLaunchActivitymethod called?
It can be seen from the search that ApplicationThreadthe scheduleLaunchActivitymethod called by

ApplicationThreadThe class definition is as follows, indicating that it is called by other processes across processes

private class ApplicationThread extends IApplicationThread.Stub

Then add a log in the method ApplicationThreadofscheduleLaunchActivity

android.util.Log.i("wztest", "ApplicationThread scheduleLaunchActivity", new Exception());

At this time, the log output is as follows:
insert image description here
It can be seen that it is called remotely through the binder, but it is actually system_servercalled

ApplicationThreadHow is the scheduleLaunchActivitymethod called?
Search in the source code, or search through the command line

 grep "\.scheduleLaunchActivity" ./ -rn
-r 在多级目录中对文本进行递归搜索
-n 输出包含匹配字符串的行

search
It can be seen that there are methods related to ActivityStackSupervisorthe class , add log
ActivityStackSupervisorrealStartActivityLocked

android.util.Log.i("wztest", "ActivityStackSupervisor realStartActivityLocked", new Exception());

The log output is as follows:
realStartActivityLocked

05-24 22:08:05.203  1547  1678 I wztest  : ActivityStackSupervisor realStartActivityLocked
05-24 22:08:05.203  1547  1678 I wztest  : java.lang.Exception
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1315)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1580)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:2726)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStack.resumeTopActivityUncheckedLocked(ActivityStack.java:2255)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStackSupervisor.resumeFocusedStackTopActivityLocked(ActivityStackSupervisor.java:2094)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1486)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:1413)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:7441)
05-24 22:08:05.203  1547  1678 I wztest  : 	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:317)
05-24 22:08:05.203  1547  1678 I wztest  : 	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2919)
05-24 22:08:05.203  1547  1678 I wztest  : 	at android.os.Binder.execTransact(Binder.java:697)
05-24 22:08:05.207  2167  2181 I wztest  : ApplicationThread scheduleLaunchActivity
05-24 22:08:05.207  2167  2181 I wztest  : java.lang.Exception
05-24 22:08:05.207  2167  2181 I wztest  : 	at android.app.ActivityThread$ApplicationThread.scheduleLaunchActivity(ActivityThread.java:788)
05-24 22:08:05.207  2167  2181 I wztest  : 	at android.app.IApplicationThread$Stub.onTransact(IApplicationThread.java:196)
05-24 22:08:05.207  2167  2181 I wztest  : 	at android.os.Binder.execTransact(Binder.java:697)
05-24 22:08:05.268  2167  2167 I wztest  : Activity onCreate
05-24 22:08:05.268  2167  2167 I wztest  : java.lang.Exception
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.Activity.onCreate(Activity.java:990)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:290)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
05-24 22:08:05.268  2167  2167 I wztest  : 	at com.android.contacts.activities.AppCompatTransactionSafeActivity.onCreate(AppCompatTransactionSafeActivity.java:33)
05-24 22:08:05.268  2167  2167 I wztest  : 	at com.android.contacts.AppCompatContactsActivity.onCreate(AppCompatContactsActivity.java:81)
05-24 22:08:05.268  2167  2167 I wztest  : 	at com.android.contacts.activities.PeopleActivity.onCreate(PeopleActivity.java:352)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.Activity.performCreate(Activity.java:7000)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.Activity.performCreate(Activity.java:6991)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2732)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2857)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.ActivityThread.-wrap11(Unknown Source:0)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1590)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.os.Handler.dispatchMessage(Handler.java:106)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.os.Looper.loop(Looper.java:164)
05-24 22:08:05.268  2167  2167 I wztest  : 	at android.app.ActivityThread.main(ActivityThread.java:6495)
05-24 22:08:05.268  2167  2167 I wztest  : 	at java.lang.reflect.Method.invoke(Native Method)
05-24 22:08:05.268  2167  2167 I wztest  : 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
05-24 22:08:05.268  2167  2167 I wztest  : 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Comprehensively referring to the above information and related content in "Android Advanced Decryption", the process of calling the method can be summarized as follows Activity:onCreate

How the onCreate method is called

Guess you like

Origin blog.csdn.net/u014084081/article/details/130855469
Recommended