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

См. обновление 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 «за исключением того, что система не запускает никаких других действий в задаче, содержащей экземпляр»?


person Tamaki Sakura    schedule 30.07.2014    source источник
comment
Например, вы можете сохранить последний класс активности внутри настроек, а затем в onCreate MAIN посмотреть этот ключ в настройках и запустить нужное действие.   -  person ex0ns    schedule 30.07.2014
comment
По умолчанию Android будет делать то, что вы от него ожидаете, если только вы не делаете что-то в действии, которое предотвратило бы это. Можете ли вы предоставить больше информации о том, что вы делаете в основной активности и активности, которую вы запускаете из основной?   -  person swbandit    schedule 30.07.2014


Ответы (2)


Скорее всего, вы устанавливаете флаги Intent, которые вызывают это, когда вы вызываете startActivity(), или вы используете свойства активности в AndroidManifest.xml, которые вызывают это. Мне нужно увидеть ваш манифест или код, чтобы указать, где именно проблема.

Обновлено

Документы Google также говорят:

Деятельность всегда является единственным и единственным членом своей задачи.

Вам следует просмотреть эту страницу и внимательно прочитать о задачах. и деятельности.

По сути, когда вы начинаете свою основную деятельность, она создается в новой задаче. Следующие действия помещаются в ту же задачу (в стек). Теперь, что важно, Android восстанавливает не только одно действие, но и всю задачу. Это по умолчанию.

В случае, если вы используете singleInstance, у каждого действия есть своя задача, и когда вы снова запускаете приложение (после кнопки HOME), Android восстанавливает задачу с корневым действием, а не с тем, которое вы видели в последний раз. Будьте очень осторожны, когда вы меняете launchMode, если неясно, как он работает, вам, вероятно, следует сначала выяснить это, иначе в будущем вас могут ожидать новые сюрпризы.

Надеюсь, теперь вам все понятно, если нет, прочитайте ссылку документация.

person Damian Petla    schedule 30.07.2014

Вы должны использовать onPause() и onResume() в своей деятельности.

person bhans1    schedule 30.07.2014