上面是说到 activity的启动,看到进程启动的地方就结束了。
现在看看process的启动过程
final ProcessRecord startProcessLocked(String processName, ApplicationInfo info,
boolean knownToBeDead, int intentFlags, String hostingType, ComponentName hostingName,
boolean allowWhileBooting, boolean isolated, int isolatedUid, boolean keepIfLarge,
String abiOverride, String entryPoint, String[] entryPointArgs, Runnable crashHandler) {
long startTime = SystemClock.elapsedRealtime();
ProcessRecord app;
//app ==null的时候,是全新启动一个应用,上面的代码略过
if (app == null) {
checkTime(startTime, "startProcess: creating new process record");
//根据上面 启动activity 读到的 ApplicationInfo 创建相应的processinfo
//在系统的pkglist中 注册应用的packagename 等等,填写相应的uid 之类的信息。
app = newProcessRecordLocked(info, processName, isolated, isolatedUid);
if (app == null) {
Slog.w(TAG, "Failed making new process record for "
+ processName +