First and foremost is about performance. Msdn has a very good article on good practices and tips to improvement performance in a win7 app here http://msdn.microsoft.com/en-us/library/ff967560(v=VS.92).aspx In addition, mango has added a new performance profiling tool to gain more insight into the performance issues of the app http://msdn.microsoft.com/en-us/library/hh202934(v=vs.92).aspx. We have done a lot of work in the past to make Metroweibo performant, but there are a couple more lingering issues that stick to my mind.
1. *not* use databinding for the listview itemtemplate
the reason is a lot of items bear cost for creating elements in the visual tree that never need to be visible. i.e. if a post is not a repost, a repost element gets created on the ui thread nevertheless because it is defined in the itemstemplate. we can make user control for each item in the itemstemplate, and depending on the properties that are set, we only need to create the elements required
2. cache image downloaded from the internet and avoid re-downloading
we currently use the lowprofileimageloader for setting image source on the image control. the only problem is that after it downloads the image, it does not cache it, so that when the same uri is specified on another image control, it tries to download it again. adding caching here should help a little
3. remove clipping for the image controls
when non-rectangle clipping is used on the image control, the drawing *does not* get passed to the gpu. since image control is usually the control that takes the most time to draw per frame, this means a lot of cpu time will be eaten up by it. by removing the clipping, gpu will come in to share the drawing workload and should free up draining on cpu considerably
4. use new mango api to exit app gracefully
this one is not performance related. but in the older version of windows phone 7 sdk, developer has no access to the page backstack. this creates some interesting problem. for example, when user runs the app first time, he lands on the login page. after login, he comes to the mainpage. and if user hits backkey on mainpage, ideally we would like to exit the app, but this does not happen since loginpage is still in the backstack. one way is to throw an exception. but it is less than ideal as it would make it look as if it were a crash when we get telemetry data from marketplace. thanks to the new api, we are able to remove entry from backstack to allow user to exit the app gracefully. details on that new api can be found here http://msdn.microsoft.com/en-us/library/hh202868(v=vs.92).aspx







