Объяснение близости задачи Android

В чем именно используется атрибут taskAffinity? Я просмотрел документацию , но я не мог понять многое.

Может ли кто-нибудь объяснить близость задачи в условиях laymans?

Ответ 1

Что такое Android Task Affinity, используемое для?

В андроидном приложении есть действия, которые образуют стек, например колоду карт. Если вы запустите приложение 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. Таким образом, изменения меняются друг на друга. Каждый раз, когда пользователь открывает новый экран погоды, он тайно открывает единственный экземпляр экрана погоды.

В этих обстоятельствах может потребоваться изменение задачи. Пользователь изменит уровень D. Затем вернитесь к уровню B. И посмотрите изменения в B, которые были сделаны D.

Программа хранит стек, с которым вы можете выполнить резервное копирование, что приятно, и когда пользователь открывает X экземпляров одной и той же активности в случайных местах, они все одно.

Слайд-шоу с большим количеством объяснений: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

Ответ 2

Аффинность указывает, к какой задаче относится деятельность.

Сродство вступает в игру в двух обстоятельствах:

Когда намерение, запускающее действие, содержит флаг FLAG_ACTIVITY_NEW_TASK.

Когда у объекта есть атрибут allowTaskReparenting, установленный как "true".

Пожалуйста, обратитесь http://developer.android.com/guide/components/tasks-and-back-stack.html