工作准备

1.Activity的启动过程
https://www.cnblogs.com/gne-hwz/p/6758308.html
具体来讲,启动activity的方式有以下几种:

在应用程序中startActivity()或startActivityForResult()方法启动指定activity
在HOME(桌面)程序中单击应用图标,启动新的activity
按”BACK”键结束当前activity,自动启动上一个activity
长按“Home”键,显示出当前任务列表,从中选择一个启动。

在android4.0\packages\apps\Launcher2\src\com\android\launcher2

当点击一个应用图标时会执行一连串流程

-》Launcher.onClick(View v)单击app图标

-》Launcher.startActivitySafely(v, intent, tag)这里比4.0多的一个参数,可能性能优化吧

-》Launcher.startActivity(v, intent, tag)

-》Activity.startActivity(intent, opts.toBundle())

-》Activity.startActivityForResult(intent, -1, options);

https://blog.csdn.net/qian520ao/article/details/78156214

-》Launcher通知AMS启动淘宝APP的MainActivity,也就是清单文件设置启动的Activity。
-》AMS记录要启动的Activity信息,并且通知Launcher进入pause状态。
-》Launcher进入pause状态后,通知AMS已经paused了,可以启动淘宝了。
-》淘宝app未开启过,所以AMS启动新的进程,并且在新进程中创建ActivityThread对象,执行其中的main函数方法。
-》淘宝app主线程启动完毕后通知AMS,并传入applicationThread以便通讯。
-》AMS通知淘宝绑定Application并启动MainActivity。
-》淘宝启动MainActivitiy,并且创建和关联Context,最后调用onCreate方法。

2.Activity的启动模式以及使用场景

猜你喜欢

转载自blog.csdn.net/zhengdongtao110/article/details/82051750