Когда пользователь кликает на иконку приложения, лаунчер вызывает
startActivity()
, в который передается интент с main активити этого приложения. Вызов startActivity()
делегируется в ActivityManagerService
через Binder IPC.После этого
ActivityManagerService
:1. Получает информацию об активити методом
PackageManager.resolveIntent()
;2. Сохраняет информацию об активити в интент, чтобы не выполнять резолюшн в будущем;
3. Проверяет, имеет ли приложение-лаунчер достаточно прав, чтобы стартовать активити. Проверка выполняется в методе
checkGrantUriPermissionLocked()
;4. Проверяет, существует ли
ProcessRecord
для процесса приложения, которое нужно запустить. Если ProcessRecord
null
, то создается новый процесс для запуска main активити.