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的启动模式以及使用场景