2016-12-01 10 views
0

У меня есть следующие созвездия:Начать последнюю открытую активность в андроиде после нажатия App значка

Нажмите значок приложение с открытым Activity A, которая проверяет, деятельность которых должно открыть следующую (Регистрацию или Main активности B). A помечен как основной пусковой механизм в xml. Теперь я перехожу к B. Затем у меня есть действие пользователя и приходят к Деятельность C. Теперь я возвращаюсь домой. Если я снова выбрал приложение из селектора фоновых задач, я вернусь к C. Но когда я вместо этого снова нажимаю значок приложения, я начну снова с A. Можно ли справиться с этим в манифесте, что в этом случае C должен открыть снова, или я должен заботиться это сам (например, через SharedPreferences?)

+0

это должно быть сделано самим андроидом. Я удивлен, почему вы столкнулись с этой проблемой. –

+0

читайте это http://stackoverflow.com/questions/2441203/how-to-make-an-android-app-return-to-the -last-open-activity-when-relaunched –

+0

Я должен добавить, что AB и C уже singleTask. Поскольку я допускаю только один экземпляр. – JanScott

ответ

0

Такое поведение можно контролировать в manifest через android:launchMode.

Смотрите здесь: https://developer.android.com/guide/topics/manifest/activity-element.html#lmode и больше объяснений здесь: https://developer.android.com/guide/components/tasks-and-back-stack.html

для вашего сценария, вы хотите сохранить C и маршрутные новых намерений к существующему экземпляру этого, так что это может работать:

<activity 
    android:name="A" 
    ... 
    android:launchMode="singleTask" /> 
<activity 
    android:name="B" 
    ... 
    android:launchMode="singleTask" /> 
<activity 
    android:name="C" 
    ... 
    android:launchMode="singleTask" /> 
+0

Не работает. после нажатия значка приложения и приложения вернется с фона, A будет запущен. AB и C уже «singleTask» – JanScott

+0

попробуйте «singleInstance», тогда нажатие значка приложения, вероятно, начало новую задачу, вместо того, чтобы использовать существующую задачу. – marmor

+0

ah, еще один вариант - попробуйте удалить launchMode из всех трех действий, Android может принести A верхняя часть задачи при повторном запуске из-за пользовательских launchModes, «стандартных» (или вообще не запускаемых), не должна вести себя так, – marmor