Android è un sistema multitasking: possiamo leggere la posta, cliccare su un link contenuto nel messaggio, condividere la pagina su un social network e tornare a vedere la posta, o qualunque altra cosa abbiamo fatto in precedenza.

Android ci aiuta in tutto questo basandosi, più che sul concetto di app, su quello di task: un task è ciò che stiamo facendo, e su Android possono esserci più task contemporaneamente. Un task ricorda come abbiamo iniziato e tutto ciò attraverso cui siamo passati, ovviamente escludendo i momenti in cui siamo passati ad altri task. Quindi ad esempio, nella situazione precedente, il task ricorderà che abbiamo aperto il client di posta, aperto un messaggio, visitato un link con il browser, e condiviso la pagina sul social network. Ognuna di queste, in Android, si chiama attività, quindi possiamo immaginare un task come una pila di attività.

Il primo strumento che Android ci offre per la navigazione è il tasto back: il suo compito è passare all’attività precedente nel task corrente, fino alla home.

In realtà ci sono delle eccezioni notevoli: nel browser ci porta indietro nella cronologia delle pagine visitate, e quando c’è una finestrella aperta (es: messaggi che richiedono conferma o scelta) ci permette di chiuderla.

Molti sviluppatori ritengono utile compiere delle manipolazioni sull’azione del tasto back, creando eccezioni che potrebbero non essere così naturali per gli utenti.

L’altro strumento, purtroppo fino a Honeycomb decisamente nascosto, è l’elenco dei task recenti, che si ottiene tenendo premuto a lungo il tasto home nei sistemi pre-Honeycomb. In questo modo ci si muove da un task all’altro ritrovandoli come li avevamo lasciati. In alternativa, si torna alla home e si apre l’app che ha dato avvio al task che ci interessa.

Da Honeycomb in poi la cosa è stata molto semplificata, aggiungendo il comodissimo tasto dei task recenti, che ci mostra l’elenco in ordine di utilizzo con uno screenshot che ci aiuta a ricordare che cosa stavamo facendo.

Un ultimo appunto va fatto per la questione dei task simili, o affini secondo la terminologia di Android: se compio due azioni simili, il risultato è che la seconda viene impilata sul primo task, evitando così di trovarsi con task simili ripetuti. Se poi (come quando apriamo un’app dalla home) l’azione è proprio identica, viene semplicemente mostrato il task precedente, e questo è ciò che permette di usare la home al posto della funzione “task recenti”.

I problemi del vecchio modello di navigazione

Sebbene viste così le cose sembrino tutto sommato molto semplici e dirette, in realtà ci sono dei casi in cui la navigazione può diventare persino frustrante.

Sicuramente è capitato a tutti di curiosare su Google Play visitando app simili di app simili di app simili… finendo per avere un task chilometrico dal quale, per uscire, iniziavamo a premere spasmodicamente il tasto back.

Altra situazione che può essere frustrante è quando stiamo compiendo un’attività secondaria rispetto al task corrente (ad esempio condividere via posta un video) e impieghiamo tanto tempo da dimenticare che cosa stavamo facendo. Premendo back ci ritroviamo all’elenco dei video, quando magari ci saremmo aspettati di vedere l’elenco delle email.

Il problema insomma è che non c’era modo di essere sicuri di cosa sarebbe successo premendo back, né di rimanere all’interno dell’app in cui si sta lavorando al momento.

A entrambi questi problemi, Android pone una soluzione aggiungendo un tipo di “back”, che in realtà chiamano “up“, cioè il tasto in alto a sinistra che permette di risalire all’interno della gerarchia dell’app. A volte compie la stessa operazione del tasto back, altre volte invece, quando ci troviamo in un’app secondaria (es: condivisione video) ci permette di lasciare il task primario e crearne un altro apposta per quest’altra app.

Un problema che invece non si può risolvere è quello delle app complesse ma che gestiscono non ottimamente la questione del “back stack” (la pila di attività che costituisce un task), con risultati che possono confondere l’utente trascinandolo in un labirinto più che una pila di attività. In questo caso, la responsabilità è dello sviluppatore… ed è vostro dovere civico informarlo!

Notifiche e widget: due problemi particolari

In tutto questo gioca un ruolo a parte l’apertura di task tramite notifiche e widget. Generalmente significa prendere una scorciatoia: ad esempio se arriva la notifica di un messaggio o ne vediamo uno nuovo nel widget che li elenca, e lo tocchiamo, si apre direttamente l’attività che mostra il messaggio e ci permette eventualmente di rispondere.

Nel caso dei widget il problema era che, premendo back, si tornava alla home, cosa che potrebbe lasciar perplessi se uno si aspetta di tornare, per esempio, all’elenco messaggi. La soluzione è stata ricostruire il percorso che si sarebbe dovuto compiere per arrivare a quella attività, in modo da evitare sorprese e regolarizzare la cosa (nota: su sistemi pre-JellyBean è responsabilità dello sviluppatore realizzare questo meccanismo!).

Nel caso delle notifiche invece il problema è più complesso, perché il punto di partenza non è per forza la home, ma potremmo aprire una notifica di messaggio anche mentre stiamo facendo altro. In tal caso il comportamento era di aprire la notifica come se facesse parte del task corrente, in modo da poter tornare subito ai propri affari. Ma se questa notifica richiedesse più attenzione e quindi qualche azione da compiere, ci ritroveremmo praticamente con un task impilato su uno che non c’entra nulla. Confusione totale.

La soluzione trovata da Android è stata quella di rinunciare al ritorno immediato al task precedente (contando sul fatto che con la nuova funzione “task recenti” è cosa da poco) e aprire un task nuovo per ogni notifica.

Conclusioni

Da Honeycomb a Jellybean (3.0 – 4.1) c’è stata una vera rivoluzione nella navigabilità di Android. Vi abbiamo presentato le novità, e speriamo di avervi dato una maggior consapevolezza circa quello che Android può fare e gli sviluppatori dovrebbero fare. Che ne pensate? Avete avuto esperienze con app poco navigabili? Fateci sapere!