A cosa serve esattamente l'attributo taskAffinity
? Ho passato il documentation ma non ho capito molto.Spiegazione affinità attività Android
Qualcuno può spiegare l'affinità del compito in termini di profano?
A cosa serve esattamente l'attributo taskAffinity
? Ho passato il documentation ma non ho capito molto.Spiegazione affinità attività Android
Qualcuno può spiegare l'affinità del compito in termini di profano?
A cosa serve Android Task Affinity?
Un'applicazione Android ha Attività che formano una pila come un mazzo di carte. Se si avvia un'applicazione Android e si iniziano cinque attività A, B, C, D, E. Formeranno una pila
E - chat view
D - weather screen
C - map view
B - weather screen
A - login screen
E è stata l'ultima attività da avviare e viene visualizzata. Se chiudi E, verrà mostrato D. Se chiudi D, verrà mostrato C. ecc.
Si noti che le attività B
e D
sono la stessa attività. Cosa succede se l'utente ha apportato alcune modifiche allo D weather screen
e ha quindi deciso di chiudere l'attività, quindi chiudere lo C Map view
?
Quindi l'utente tornerà alla schermata del meteo e l'utente non sarebbe soddisfatto perché le modifiche apportate al livello D weather screen
non sono state salvate nel livello B weather screen
. Sebbene sia la stessa attività, è un STATO diverso da quell'attività.
L'utente ha una pila di attività a 5 livelli e due di esse hanno la stessa attività. Espellere tutti e 5 i file in pila creerà il fenomeno in cui interagirai con due diverse versioni della stessa attività e potrebbe essere abbastanza confuso.
Gli utenti di solito non pensano in termini di una pila rigida di attività. Pensano: "ooh la vista del tempo farò un cambiamento lì" e poi vogliono tornare alla vista Mappa. Quindi eseguire nuovamente il backup perché vogliono tornare alla schermata di accesso. Perché la visualizzazione di B weather app
e perché non ha salvato le impostazioni dal livello D
?
Il programmatore potrebbe essere in grado di alleviare un po 'di confusione se le attività B
e D
sono state collegate in stato. In questo modo cambia in uno cambia l'altro. Ogni volta che l'utente apre una nuova schermata meteo, apre segretamente la singola istanza della schermata meteo.
In queste circostanze, la modifica dell'attivitàAffinità dell'attività potrebbe essere desiderabile. L'utente dovrebbe cambiare il livello D. Quindi eseguire il backup al livello B. E vedere le modifiche in B apportate a D.
Il programma conserva uno stack da cui è possibile eseguire il backup, il che è piacevole e quando l'utente si apre X casi della stessa attività in luoghi casuali, sono tutti uno.
Presentazione con ulteriori spiegazioni: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
Che ne dite se utilizzare il 'singleInstance' invece di usare 'taskAffinity'? – hguser
singleInstance ha lo svantaggio che un'attività come singleInstance non può avere altre attività nello stack di attività. con taskAffinity è possibile configurare l'avvio di un'attività in un'attività diversa e un'altra in corso. – Malachiasz
In alcuni casi, SingleInstance è la giusta via da percorrere. specialmente se vuoi assicurarti che la tua attività sia l'unica attività del suo compito e che sia la radice * indipendentemente * dall'intento che l'ha creata. In questo modo è possibile esporre tale attività a sviluppatori e app di terze parti senza perdere il controllo del record dell'attività dell'attività. –
L'affinità indica quale compito un'attività preferisce appartengono.
L'affinità entra in gioco in due circostanze:
Quando l'intento che lancia un'attività contiene la bandiera FLAG_ACTIVITY_NEW_TASK.
Quando un'attività ha l'attributo allowTaskReparenting impostato su "true".
prega di fare riferimento http://developer.android.com/guide/components/tasks-and-back-stack.html
Ecco un'ottima spiegazione di esempi: https://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack – user1269737