#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
это работает.