Поддержка Android Activity back stack и многозадачность - PullRequest
2 голосов
/ 26 января 2012

У меня есть приложение, которое поддерживает многозадачность (работает в фоновом режиме), однако у меня возникли проблемы с Android Backstack.

Вот что у меня есть:

Задание A запускает задание B для результата, поэтому ...

Занятие A -> Занятие B

Если во время действия B пользователь долго нажимает кнопку home и переключается на другое приложение (например, в браузере), а затем долго нажимает кнопку home снова и возвращается к моему приложению они будут в Деятельности B, однако задний стек в это время будет выглядеть следующим образом:

Задание A -> Интернет-браузер -> Упражнение B

Поэтому, когда я выполняю finish(), чтобы отправить результат из моей Деятельности B, он возвращается не к моей Деятельности A, а скорее в Интернет-браузер ...

Это также имеет место, если пользователь не использует долгое нажатие кнопки home , но также использует кнопку home , чтобы вернуться к своему средству запуска, а затем использует длинные нажмите кнопку home , чтобы вернуться в мое приложение. В этом случае задний стек еще хуже:

Домашний Launcher -> Задание B

Поэтому, когда я выполняю finish() в Деятельности B, пользователь возвращается к своему домашнему экрану, и он никогда не может вернуться к Деятельности A, за исключением случаев, когда он снова запускает приложение из своего ящика приложений.

Есть ли способ реализовать многозадачность в этом случае? Задание B всегда должно возвращать результат в задание A независимо от того, что пользователь открыл между этими двумя.

1 Ответ

1 голос
/ 27 января 2012

OK. После долгих часов исследований и проб разных вещей, вот решение проблемы. Надеюсь, это поможет другим ...

Решение довольно простое и простое, в AndroidManifest.xml

набор android:launchMode="singleTask" для задания A

набор android:noHistory="true" для действия B

Таким образом, действие B будет удалено из стека, если мы перейдем к другому приложению, например браузеру, или выйдем на домашний экран, поэтому, когда мы вернемся к нашему приложению, мы вернемся к действию A.

...