Para que exatamente é o atributo taskAffinity
usado? Eu examinei a documentação, mas não consegui entender muito.
Alguém pode explicar a afinidade de tarefas em termos leigos?
android
android-manifest
taskaffinity
Traxex1909
fonte
fonte
Respostas:
Para que é usado o Android Task Affinity?
Um aplicativo Android possui atividades que formam uma pilha como um baralho de cartas. Se você iniciar um aplicativo Android e iniciar cinco atividades A, B, C, D, E. Eles formarão uma pilha
E foi a última Activity a ser iniciada e está aparecendo. Se você fechar E, D será mostrado. Se você fechar D, C será mostrado. etc.
Observe que Atividades
B
eD
são a mesma atividade. E se o usuário fizesse algumas modificações noD weather screen
, e decidisse fechar a atividade e, em seguida, feche oC Map view
?Então o usuário voltaria para a tela de previsão do tempo e ficaria infeliz porque as alterações feitas no nível
D weather screen
não foram salvas no nívelB weather screen
. Embora seja a mesma atividade, é um ESTADO diferente dessa atividade.O usuário tinha uma pilha de 5 camadas de atividades, e duas delas eram a mesma atividade. Tirar todos os 5 da pilha criará o fenômeno em que você estará interagindo com duas versões diferentes da mesma atividade e pode ser bastante confuso.
Os usuários geralmente não pensam em termos de uma pilha rígida de atividades. Eles pensam: "ooh a visualização do tempo eu vou fazer uma alteração lá" e então querem voltar para a visualização do mapa. Em seguida, faça o backup novamente porque eles querem voltar para a tela de Login. Por que está sendo
B weather app
exibido e por que não salvou as configurações do nívelD
?O programador pode ser capaz de aliviar alguma confusão se as Atividades
B
eD
estiverem vinculadas no estado. Dessa forma, muda para um muda o outro. Cada vez que o usuário abre uma nova tela de clima, ele abre secretamente uma única instância da tela de clima.Nessas circunstâncias, pode ser desejável alterar taskAffinity da Activity. O usuário mudaria o nível D. Em seguida, voltaria ao nível B. E veria as alterações em B que foram feitas em D.
O programa mantém uma pilha pela qual você pode fazer backup, o que é bom, e quando o usuário abre X instâncias da mesma atividade em lugares aleatórios, elas são todas uma.
Apresentação de slides com mais explicações: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
fonte
singleInstance
vez de usar otaskAffinity
?taskAffinity
nada :-( A explicação é vaga. É incrível que essas respostas recebam tantos votos positivos.taskAffinity
é usado para especificar o nome da tarefa em que a atividade prefere ser executada. Quando umIntent
contém o sinalizadorFLAG_ACTIVITY_NEW_TASK
, a atividade é então colocada nesta tarefa específica (definida portaskAffinity
).Although it's the same activity, it's a different STATE of that activity.
Eu diria: "É outro exemplo dessa atividade."A afinidade indica a qual tarefa uma atividade prefere pertencer.
A afinidade entra em ação em duas circunstâncias:
Quando o intent que inicia uma atividade contém o sinalizador FLAG_ACTIVITY_NEW_TASK.
Quando uma atividade tem seu atributo allowTaskReparenting definido como "true".
Consulte http://developer.android.com/guide/components/tasks-and-back-stack.html
fonte
Você pode encontrar todos os casos (e algumas vezes casos extremos) nesta apresentação detalhada
Por favor, consulte Manipulação de tarefas Android e pilha de retorno
fonte