Для чего именно используется атрибут taskAffinity
? Я просмотрел документацию, но многого не понял.
Может ли кто-нибудь объяснить сходство задач с точки зрения непрофессионала?
android
android-manifest
taskaffinity
Traxex1909
источник
источник
Ответы:
Для чего используется привязка задач Android?
В приложении для Android есть действия, которые образуют стопку, как колода карт. Если вы запускаете приложение для Android и запускаете пять действий A, B, C, D, E. Они сформируют стопку
E было последним запущенным Activity, и он отображается. Если вы закроете E, отобразится D. Если вы закроете D, отобразится C. и т.п.
Обратите внимание, что Действия
B
иD
- это одно и то же действие. Что, если бы пользователь внес некоторые изменения вD weather screen
, а затем решил закрыть действие, а затем закрытьC Map view
?Тогда пользователь вернется к экрану погоды, и он будет недоволен, потому что изменения, сделанные на уровне,
D weather screen
не были сохранены на уровнеB weather screen
. Хотя это одно и то же действие, это другое СОСТОЯНИЕ этого действия.У пользователя был пятиуровневый стек действий, и два из них были одинаковыми. Извлечение всех 5 из стека создаст явление, при котором вы будете взаимодействовать с двумя разными версиями одного и того же действия, и это может сбить с толку.
Пользователи обычно не думают о жестком стеке действий. Они думают: «Ой, погодный режим, я там поменяю», а затем хотят вернуться к просмотру карты. Затем сделайте резервную копию еще раз, потому что они хотят вернуться к экрану входа в систему. Почему
B weather app
отображается и почему не сохранились настройки с уровняD
?Программист может облегчить некоторую путаницу, если Действия
B
иD
были связаны в состоянии. Таким образом, одно изменение меняет другое. Каждый раз, когда пользователь открывает новый экран погоды, он тайно открывает единственный экземпляр экрана погоды.В этих обстоятельствах может оказаться желательным изменение taskAffinity Activity. Пользователь изменит уровень D. Затем вернется на уровень B. И увидит изменения в B, которые были внесены в D.
Программа хранит стек, через который вы можете делать резервные копии, что приятно, и когда пользователь открывает X экземпляров одного и того же действия в случайных местах, все они становятся одним целым.
Слайд-шоу с дополнительными пояснениями: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
источник
singleInstance
вместоtaskAffinity
?taskAffinity
вообще почти не затрагивает :-( Объяснение расплывчатое. Удивительно, что за эти ответы так много положительных голосов.taskAffinity
используется для указания имени задачи, в которой действие предпочитает запускаться. Когда объектIntent
содержит флагFLAG_ACTIVITY_NEW_TASK
, действие затем помещается в эту конкретную задачу (определеннуюtaskAffinity
).Although it's the same activity, it's a different STATE of that activity.
Я бы сказал: «Это еще один пример той деятельности».Родство указывает, к какой задаче предпочитает принадлежать деятельность.
Сходство проявляется в двух обстоятельствах:
Когда намерение, запускающее действие, содержит флаг FLAG_ACTIVITY_NEW_TASK.
Когда для действия атрибут allowTaskReparenting установлен в значение «true».
См. Http://developer.android.com/guide/components/tasks-and-back-stack.html.
источник
Вы можете найти все случаи (а иногда и крайние случаи) в этой подробной презентации.
См. Раздел Управление задачами Android и обратным стеком.
источник