3

следующую процедуру:Кнопка Назад возвращает меня к пусковой деятельности не глубоко-линкер Активности в

  1. Начало моего приложения, Stack: [HomeActivity]
  2. Переход к Facebook, используя глубокую связь, чтобы попасть в деятельность X
  3. Нажатие назад кнопки приводит в получении обратно к HomeActivity вместо Facebook

Прогнозный

  1. Начало моего приложения, Stack: [HomeActivity]
  2. Переход к Facebook, используя глубокую связь, чтобы попасть в операцию X
  3. Нажатие назад кнопки приводит в получении обратно в Facebook App

Я получаю ожидаемое поведение, когда мое приложение не запускается заранее. Я вижу, что другим приложениям, таким как Instagram, удалось заставить это работать исправно. Поэтому, даже если ваше приложение работает в фоновом режиме, оно возвращает вас к активности, которая выдает намерение глубокой ссылки.

В моей деятельности есть launchMode="singleTop", onBackPressed() не переопределяется, поэтому он называет реализацию суперкласса.

Что мне здесь недостает, чтобы исправить это?

Я отлаживал его и onBackPressed() в конечном итоге звонил finish(), но он возвращает меня в мое приложение вместо Facebook.

ответ

4

Добавить

android:taskAffinity="" 

в <activity> тег для «глубоко связана деятельности» в манифест.

Что происходит в том, что Facebook запускает свою «глубоко связанную активность» с Intent.FLAG_ACTIVITY_NEW_TASK (вы должны быть в состоянии проверить это, проверяя содержание Intent в вашей деятельности в onCreate() или onNewIntent().

Если ваше приложение уже запущен, Android выводит текущую задачу на передний план и запускает «глубоко связанную активность» поверх этой задачи. Когда вы нажимаете BACK, она просто заканчивает вашу «глубоко связанную активность» и бросает вас в вашу существующую задачу.

Android делает это, потому что все ваши действия имеют один и тот же taskAffinity, поэтому, когда ему нужно создать новую задачу для вашего приложения, сначала попытайтесь найти существующую задачу с тем же сродством.

Если вы установили taskAffinity своей «глубоко связанной деятельности», чтобы он был пуст, это должно помешать Android искать существующую задачу для запуска Activity в. Он просто создаст новую задачу и запустит вашу «глубоко связанную деятельность» в эту новую задачу. Затем, когда вы нажмете BACK, ваша активность будет завершена, и задача станет пустой, поэтому задача будет завершена, и она вернет вас обратно в предыдущую задачу в стеке задач (которая должна быть Facebook, так как ваше приложение было запущено оттуда).

0

Причина в том, что запуск Facebook начинается с новой задачи. Back всегда перемещает стек активности в задаче.

Если у вас есть контроль над намерением, который запускает Facebook, есть флаги, которые управляют заданием, в котором запущена деятельность. По умолчанию запускается одна и та же задача.

Я подозреваю, что система Intent.FLAG_ACTIVITY_NEW_TASK добавляется умышленно системой - так что это может быть по дизайну (работает по назначению).

PS: Эта презентация научит вас все, что вам когда-либо нужно знать о андроиде деятельности и задачах: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

+0

Так что это наоборот, я не использую намерение Facebook, но наоборот. Использование глубокой ссылки на ссылку внутри Facebook используется для запуска * моего * приложения для перехода к * Activity X * – Mahoni

 Смежные вопросы

  • Нет связанных вопросов^_^