Иконки установленных на телефоне приложений отображаются приложением-лаунчером.
Когда пользователь кликает на иконку приложения, лаунчер вызывает startActivity(), в который передается интент с main активити этого приложения. Вызов startActivity() делегируется в ActivityManagerService через Binder IPC.

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