Кнопка Открыть приложение для Android не возвращает к текущему действию, которое уже открыто

StackOverflow https://stackoverflow.com//questions/25039741

Вопрос

Смотрите Обновление 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() в вашей деятельности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top