Кнопка Открыть приложение для Android не возвращает к текущему действию, которое уже открыто
-
21-12-2019 - |
Вопрос
Смотрите Обновление 2 для получения информации о текущей проблеме, касающейся режима запуска активности
Я разрабатываю приложение для Android.Теперь у меня проблема в том, что как только я открываю новое действие (это не то действие с android.intent.action.MAIN
и android.intent.category.LAUNCHER
) в приложении, а затем нажмите кнопку "Домой", а затем нажмите значок приложения, приложение не возвращает меня к новому действию, которое я уже открыл (и которое отображается в списке последних приложений).Вместо этого он открывает новое основное действие.
Что я должен сделать, чтобы изменить это поведение?
===================================================
Обновление
Код для запуска действия, отличного от основного действия
startActivity(new Intent(MainActivity.this, LocalActivity.class));
AndroidManifest.xml
<activity
android:name=".MainActivity"
android:theme="@style/AppDrawTheme"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".LocalActivity"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:screenOrientation="portrait">
</activity>
===================================================
Обновление 2
Я решаю проблему путем изменений
android:launchMode="singleInstance"
к
android:launchMode="singleTask"
Хотя я и не понимаю, почему singleInstance
это было бы проблемой.Как я должен понимать, что Google пишет в документе Android "за исключением того, что система не запускает никаких других действий в задаче, содержащей экземпляр" ?
Решение
Скорее всего, вы устанавливаете Intent
флаги, которые вызывают это при вызове startActivity()
или вы используете свойства activity в AndroidManifest.xml
которые вызывают это.Мне нужно было бы увидеть ваш манифест или код, чтобы точно указать, в чем проблема.
Обновленный
В документах Google также говорится:
Действие всегда является единственным элементом своей задачи.
Вы должны пройти через это эта страница и внимательно прочитайте о задачах и мероприятиях.
По сути, когда вы начинаете свое основное действие, оно создается в рамках новой задачи.Следующие действия помещаются в ту же задачу (в стек).Теперь, что самое важное, Android восстанавливает не только отдельное действие, но и всю задачу целиком.Это значение по умолчанию.
В случае, если вы используете singleInstance
у каждого действия есть своя задача, и когда вы снова запускаете приложение (после кнопки "ДОМОЙ"), Android восстанавливает задачу с активностью root, а не с вашей последней замеченной активностью.Будьте очень осторожны, когда меняете режим запуска, если непонятно, как это работает, то вам, вероятно, следует сначала выяснить это, иначе в будущем у вас может быть еще больше сюрпризов.
Я надеюсь, теперь вам все ясно, если нет, пожалуйста, прочтите связанный документация.
Другие советы
Вы должны использовать onPause()
и onResume()
в вашей деятельности.