Чем отличается запуск приложения от системного запуска и пользовательского приложения?
Приложение А имеет основной вид деятельности, который запускается в стандартном режиме, откройте его. Когда я снова открываю его из панели запуска системы, все выглядит нормально. Но если запустить приложение A через другое приложение B, перезапустите! Зачем?
Мой код:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("A's package name");
launchIntent.setAction(Intent.ACTION_MAIN);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(launchIntent);
1 ответ
По умолчанию android:launchMode
деятельности Standard
в соответствии с https://developer.android.com/guide/topics/manifest/activity-element.html
По ссылке выше:
Каждый раз, когда появляется новое намерение для "стандартного" действия, создается новый экземпляр класса, чтобы ответить на это намерение
Таким образом, onCreate() будет вызываться столько раз, сколько вы начнете
Это было для вашего приложения, для Android Launcher он отличается, он использует Tasks
которые
коллекция действий, с которыми пользователи взаимодействуют при выполнении определенной работы
определены здесь https://developer.android.com/guide/components/tasks-and-back-stack.html
Эти задачи сохраняют порядок действий в стеке, поэтому он знает, какое из них возобновить первым.
Эта цитата отвечает на ваш вопрос о главном экране устройства Android:
Домашний экран устройства является отправной точкой для большинства задач. Когда пользователь касается значка в панели запуска приложений (или ярлыка на главном экране), задача этого приложения выходит на первый план. Если для приложения не существует задачи (приложение не использовалось в последнее время), то создается новая задача, и "основное" действие для этого приложения открывается как корневое действие в стеке.