Android persistent属性研究(2)

假如该被android:persistent修饰的应用此时并未运行的话,那么AM将调用startProcessLocked启动该app,关于startProcessLocked不再描述,另外一篇文章《How to start a new process for Android?》中做了详细的介绍。

app的启动过程就是启动app所在的package对应的进程。

final ProcessRecord addAppLocked(ApplicationInfo info) {           ProcessRecord app = getProcessRecordLocked(info.processName, info.uid);           if (app == null) {               app = newProcessRecordLocked(null, info, null);               mProcessNames.put(info.processName, info.uid, app);               updateLruProcessLocked(app, truetrue);           }           if ((info.flags&(ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT))                   == (ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT)) {               app.persistent = true;               app.maxAdj = CORE_SERVER_ADJ;           }           if (app.thread == null && mPersistentStartingProcesses.indexOf(app) < 0) {               mPersistentStartingProcesses.add(app);               startProcessLocked(app, "added application", app.processName);           }           return app;       }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwdfdz.html