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