Объяснение сходства задач Android
Что именно является атрибутом taskAffinity
используется для? Я просмотрел документацию, но я не мог понять многое.
Кто-нибудь может объяснить близость задачи с точки зрения неспециалистов?
2 ответа
Для чего используется Android Task Affinity?
В приложении для Android есть Действия, которые формируют стек, как колоду карт. Если вы запустите приложение для Android и запустите пять заданий A,B,C,D,E. Они сформируют стек
E - chat view
D - weather screen
C - map view
B - weather screen
A - login screen
E был последним действием, которое было начато, и оно показывает. Если вы закроете E, D будет показан. Если вы закроете D, C будет показан. и т.п.
Обратите внимание, что деятельность B
а также D
одинаковая активность. Что делать, если пользователь должен был внести некоторые изменения в D weather screen
, а затем решил закрыть деятельность, а затем закрыть C Map view
?
Тогда пользователь вернется на экран погоды, и он будет недоволен, потому что изменения сделаны на уровне D weather screen
не были сохранены на уровне B weather screen
, Хотя это одно и то же действие, это другое СОСТОЯНИЕ этого действия.
У пользователя был 5-слойный набор действий, и два из них были одинаковыми. Удаление всех 5 из стека создаст явление, при котором вы будете взаимодействовать с двумя различными версиями одного и того же действия, и это может привести к путанице.
Пользователи обычно не думают с точки зрения жесткого стека действий. Они думают: "о погоде, я сделаю там изменения", а затем они хотят вернуться к представлению карты. Затем сделайте резервную копию снова, потому что они хотят вернуться к экрану входа. Почему B weather app
показ и почему не сохранить настройки с уровня D
?
Программист может смягчить некоторую путаницу, если деятельность B
а также D
были связаны в состоянии. Таким образом, изменение одного изменения другого. Каждый раз, когда пользователь открывает новый экран погоды, он тайно открывает один экземпляр экрана погоды.
В этих обстоятельствах изменение taskAffinity of Activity может быть желательным. Пользователь изменит уровень D. Затем вернитесь на уровень B. И увидите изменения в B, которые были внесены в D.
Программа хранит стек, через который вы можете сделать резервную копию, что приятно, и когда пользователь открывает X экземпляров одной и той же активности в случайных местах, все они едины.
Слайд-шоу с дополнительными пояснениями: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
Сродство указывает, к какой задаче предпочитает принадлежать деятельность.
Сродство вступает в игру в двух обстоятельствах:
Когда намерение, которое запускает действие, содержит флаг FLAG_ACTIVITY_NEW_TASK.
Когда у активности есть атрибут allowTaskReparenting, установленный в значение "true".
Пожалуйста, обратитесь http://developer.android.com/guide/components/tasks-and-back-stack.html
Вы можете найти все случаи (а иногда и крайние случаи) в этой подробной презентации.