Запретить приложению возвращаться к начальной загрузке при нажатии кнопки Home на панели навигации

#android #android-intent #android-manifest #android-lifecycle

#Android #android-намерение #android-манифест #android-жизненный цикл

Вопрос:

Я создаю приложение для Android, которое запускает сторонние приложения, оба из которых работают в полноэкранном режиме.

При запуске стороннего приложения, если я проведу пальцем снизу вверх, я увижу панель навигации Android (хорошо) — однако, если я затем нажму кнопку Android Home на этой панели навигации, стороннее приложение завершит работу (хорошо), но мое приложение вернется к основному загрузочному действию, а не к действию, из которого я запустил приложение.

Мой манифест приложения содержит..

 <activity android:name=".boot.BootActivity"
    android:configChanges="keyboardHidden|locale|layoutDirection"
    android:excludeFromRecents="true"
    android:label="@string/app_name"
    android:launchMode="singleTask"
    android:screenOrientation="landscape"
    android:windowSoftInputMode="stateAlwaysHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.HOME" />
    </intent-filter>
</activity>

<activity android:name=".main.MainActivity"
    android:configChanges="keyboardHidden|locale|layoutDirection"
    android:label="@string/title_activity_main"
    android:launchMode="singleTask"
    android:screenOrientation="landscape"
    android:windowSoftInputMode="stateAlwaysHidden" />
  

BootActivity выполняет множество предварительных загрузок и генерацию модели, прежде чем дождаться, пока пользователь выберет кнопку, которая запускает загрузку MainActivity, которая отображает меню и краткий обзор для сторонних приложений.

Когда запускается третья сторона, мы проводим пальцем вверх и нажимаем Home на панели навигации Android, logcat получает оба «android.intent.action.MAIN» и «android.intent.category.ГЛАВНАЯ страница».

Как упоминалось выше, это приводит к возврату приложения к загрузке, но я бы хотел, чтобы стороннее приложение завершило работу и вернулось к обзору приложений в MainActivity.

Можно ли добавить, удалить или временно отключить фильтры намерений программно?

Комментарии:

1. Брат, проблема с объемом оперативной памяти операционной системы заключается в том, что из-за того, что ваше устройство способно обрабатывать ваше стороннее приложение, вы выполняете более сложную задачу при втором действии, чем при обработке ваших данных savedInstance () amp; restoreInstance() amp; onResume() amp; onPause (), иначе оно перейдет к первому действию на основе файла намерений

Ответ №1:

Как правило, использование этих специальных режимов запуска ( singleTask ) — плохая идея. Если ваше приложение BootActivity запускается HomeActivity , то оно не будет запущено в новой задаче, хотя режим запуска подразумевает это, потому что оба этих действия одинаковы taskAffinity . Если вы действительно хотите, чтобы они запускались в разных задачах, то вам нужно установить taskAffinity для одной или другой (или обеих), чтобы они не совпадали. Прочитайте немного о том, как taskAffinity это работает.