Windows Phone 7 ed il mono-tasking
C’è molto rumore attorno a Windows Phone 7, il sistema operativo che Microsoft sta lustrando e sta promuovendo in lungo e in largo per – credo – il prossimo Natale. Dal punto di vista di noi developer, le cose sono molto interessanti, perchè cellulari con su WP7 possono essere tranquillamente programmati usando il nostro amato .NET Framework.
Scendendo più nel dettaglio, è sufficiente saper sviluppare applicazioni con Silverlight ed il gioco è fatto. Certo, ci sono dei piccoli dettagli da prendere in considerazione, perchè la nostra futura app non gira dentro un browser. Le applicazioni Windows Phone 7 sono applicazioni Silverlight 3 che girano in modalità out-of-browser. Poi bisogna pensare al fatto che – trattandosi di un device mobile – non ci sono tastiere, nè mouse, ma si interagisce con lo screen touch e così via. Le solite cose che per chi ho lavorato con dispositivi mobile non sono una novità.
Se volete scendere ancora più nel dettaglio, invece, vi consiglio di leggere questo post di Corrado, che evidenzia tra le altre cose un aspetto piuttosto importante di WP7: ovvero, questo sistema operativo non è multi-tasking.
Cosa comporta questo per un utente normale? Significa che può aprire una sola applicazione alla volta. Se apriamo l’applicazione “Pippo”, poi premiamo Home per tornare alla schermata iniziale, la nostra applicazione viene chiusa a tutti gli effetti (pare che tombstoned sia il termine ufficiale di Microsoft). Se l’utente riclicca sull’icona della nostra applicazione, dobbiamo fargli credere che in realtà non si sia mai chiusa, ripristinando lo stato esattamente com’era. lo spiega bene Corrado nel post linkato sopra.
Mi fa un po’ storcere il naso questo meccanismo. Ecco un po’ di punti deboli:
- bisogna prestare attenzione ad un eventuale splash screen della nostra applicazione: se è davvero un avvio a tutti gli effetti, questi deve apparire. Se l’avvio avviene dopo un tombstone, allora questi NON deve apparire
- impossibilità di scrivere applicazioni che girano davvero in background. Ad esempio: su Symbian posso tranquillamente lanciare l’esecuzione di un GPS tracking, che se ne sta lì buono buono a tracciare la posizione e a scrivere il suo file di log, e contemporanemente posso ricevere telefonate, navigare, scrivere un sms: tutto quello che il cellulare può fare
- questa decisione è stata presa per risparmiare batteria e limitare i consumi, per salvaguardare il punto di vista dell’utente. Avrei preferito – però – che dicessero che un’app in background può usare solo l’1% del processore, oppure solo 16Mb di RAM, oppure non può accedere allo storage SD, ad esempio. Così si possono scrivere un sacco di belle applicazioni, ma se ne taglia comunque una bella fetta.
Anche durante l’evento DotNetLombardia della settimana scorsa è saltata fuori questa questione. Si ragionava che evidentemente sarà un po’ più scomodo usare Tom Tom Navigator su WP7, perchè se mentre sto guidando arriva una telefonata o un sms, beh, ecco, insomma, Tom Tom si chiude. Certo, si può riaprire, ma non è così rapido come può sembrare. Almeno credo.
Forse però parlo da utente skillato. Magari il target per WP7 studiato da Microsoft non è così esperto. Però vi dico solo una cosa: mio padre, che ha anche lui un Nokia piuttosto evoluto, ha imparato a riconoscere quando un’app è in esecuzione/aperta, perchè accanto alla sua icona ne appare un’altra … una specie di “ingranaggio” (che però dipende dal tema in uso sul cellulare), che indica appunto che quell’applicazione sta girando in background.
Vedremo, io non ho mica la verità in mano!