Month: March 2012

WP7 Tango : FAS per i device con 256 MB di RAM

Diversamente da come era stato annunciato, anche per i device con 256 MB di RAM è supportato il FAS (Fast Application Switching) nella versione Windows Phone 7 “Tango”.

La notizia è confermata dall’aggiornamento della documentazione ufficiale Microsoft su MSDNche riporta testualmente :

“Fast Application Switching is supported on 256-MB devices. However, because keeping applications in a dormant state for Fast Application Switching is dependent on the phone’s available memory, an application running on 256-MB devices will be terminated and tombstoned more often and more quickly than the same application running on a phone with more memory”

Ovviamente, poichè il device ha meno memoria RAM, ogni applicazione rimane nello stato di Dormant meno frequentemente e passa più facilmente nello stato di Tombstoned.

Un test interessante è stato eseguito anche utilizzando l’emulatore per i device con 256 MB di RAM contenuto nel nuovo SDK 7.1.1; per questo vi rimando al seguente link.

Rilasciato il Windows Phone SDK 7.1.1

E’ stato rilasciato ufficialmente l’aggiornamento dell’SDK per Windows Phone alla versione 7.1.1, ossia la versione definitiva della CTP già rilasciata il mese scorso.

Con questo aggiornemento è possibile :

  • sviluppare applicazione per i device con 256 MB di RAM (come previsto con l’aggiornamento Tango del sistema operativo);
  • sviluppare con la Consumer Preview di Windows 8;

Per quanto riguarda il primo punto, vengono addirittura forniti due emulatori differenti per dispositivi con 512 MB e 256 MB di RAM.

Per tutti i dettagli, vi rimando al link sul blog ufficiale.

WP7 : HttpWebRequest e la cache interna

Forse non tutti sanno che la classe HttpWebRequest utilizza una propria cache interna per tutte le richieste che via via vengono eseguite durante il suo utilizzo.

Accade che, eseguendo una richiesta sempre al medesimo URL, l’oggetto HttpWebRequest istanziato non esegue effettivamente la richiesta (l’ho rilevato mediante Wireshark) ma bensì ritorna immediatamente il contenuto della richiesta fatta in precedenza allo stesso URL. Questo comportamento è, appunto, dovuto alla cache interna di cui la classe è dotata.

Su Windows Phone 7, non esiste la possibilità di modificare l’utilizzo della cache attraverso le cache policies come accade nel .Net Framework ma è necessario sopperire a questa mancanza attraverso un workaround.

string requestUrl = String.Format(url + "&{0}", DateTime.Now.Ticks);
HttpWebRequest request = HttpWebRequest.CreateHttp(requestUrl);
request.BeginGetResponse(new AsyncCallback(HandleResponse), request);

Attraverso il codice precedente, si evince che il workaround consiste nell’aggiungere un parametro casuale nella query string dell’URL desiderato, in modo da avere di volta in volta un URL risultante diverso e forzare la richiesta. In questo caso, la casualità è determinata dai ticks del sistema ma potrebbe essere utilizzata anche legata alla generazione di un Guid. Tipicamente, questo parametro sarà ignorato dal web server ma servirà dal lato del device per “simulare” la richiesta ad un URL differente.

Sicuramente la soluzione non appare molto elegante ma a quanto pare è l’unica possibile…nell’attesa di piacevoli smentite !