设为首页 收藏本站
查看: 845|回复: 0

[05.15] 关于 Windows Phone 7 Silverligth 性能改进

[复制链接]

尚未签到

发表于 2015-5-11 09:15:13 | 显示全部楼层 |阅读模式
  这些天写新浪微博学习了很多东西,发现很多东西不记下来还是会忘。所以开博来记录一下。
  今天暂时考虑记录Performance这一块,因为一个月的开发下来,发现ListBox的确卡的要命。
那么没办法我得把ListBox 给修理一番,但是途中发现软件很多可以改进的地方。
例如一些Visible的控制,Image的处理,WebClient改为HttpWebRequest等,ProgressBar更改。
主要都是一个原则,尽量少的占用UI线程的资源,尽可能后台线程处理,到处理完毕再Invoke。
  但是以前就总觉得什么方便用什么,看来还是不行啊,移动平台资源有限,浪费可耻啊。
主要是影响用户体验什么的,很不爽。
  1.程序启动
  a.启动过程可以用SplashImage,这个没问题,有一个有意思的。
b.System.Threading.Thread.Sleep(Int32) 这个可以让进程停留在等待画面,也就是让第一屏停留更久。
c.最小化程序的assembly,语言文件编译为附加的assembly,资源选用content模式。
d.图片尽量选用jpg而不是png,除非需要使用到透明处理。
e.MS团队建议编译为很多小的链接库而不是都放在主程序内,甚至可以每个页面配一个Project???
f.然后是注意页面载入的过程,最好是在XAML解析完毕之后再处理Heavy long-running process,原理是利用页面 LayoutUpdated 事件的触发。
代码如下:



private bool _onNavigatedToCalled = false;
public Page()
{
InitializeComponent();
LayoutUpdated += new EventHandler(Page_LayoutUpdated);
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
_onNavigatedToCalled = true;
}
private void Page_LayoutUpdated(object sender, EventArgs e)
{
if (_onNavigatedToCalled == true)
{
_onNavigatedToCalled = false;
Dispatcher.BeginInvoke(() =>
{
// Do your stuff here, in the “future”                    }
}
);
}            
}

  g.对隔离存储空间内文件的读写最好注意掌控时间,如果需要长时间读取的考虑利用Dispatcher。
h.尽量减少UI线程被Block,能block UI 线程的事件有 Push Notification,NetWork Information ,Location Services,Radio。
  2.线程的理解
  WP7里面有几种线程
a.UI 线程。感觉有点类似前台。
b.Composition 线程。小秘书,经常用来递送数据给GPU。
c.Animation 线程。动画,处理story-board比较多,传递给GPU。
d.BackgroundWorker。异步处理背景线程,DoWork,还有Complete实现Invoke。
  3.图像处理
  a.我纠结了很久的WP7调试时边上那一条不知什么东西的,可以通过下面代码禁用掉。



Application.Current.Host.Settings.EnableFrameRateCounter = false;

  见图,其中第一项第二项建议值为 30-60,Fill Rate在下一条详解:
DSC0000.png
  b.Fill Rate。WP7有一个Fill Rate限制,控制在2.5以内为佳,上3会产生警告。这个值的含义是显示出绘制了多少个屏幕长度的图像。
  4.重头戏来了ListBox。
  网上可以下载到很多关于WPSL的ListBox改进版,有一个RadControl 里面包含很多List 有Jump List 和 DataBound List,但是有个很有趣的地方就是他们做的很多控件跟Silverlight.Toolkit 里面很多好像有相似,毕竟SLTK是开源项目,这方面就不做过多深究了。网上这个 Control 包卖1xx 美元,其他途径就不多透露了哈。
  那么竟然说了很多控件 就不止这个了。下面的链接都有详细描述啦。
  5.参考链接:
  Deferredload Listbox:
  http://blogs.msdn.com/b/delay/archive/2010/09/08/never-do-today-what-you-can-put-off-till-tomorrow-deferredloadlistbox-and-stackpanel-help-windows-phone-7-lists-scroll-smoothly-and-consistently.aspx
  Performance silverlight sample:
  http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=3a8636bf-185f-449a-a0ce-83502b9ec0ec
  List Box Performance:
  http://blogs.msdn.com/b/slmperf/archive/2010/10/06/silverlight-for-windows-phone-7-listbox-scroll-performance.aspx
  Lazy ListBox:
  http://blogs.msdn.com/b/ptorr/archive/2010/10/12/procrastination-ftw-lazylistbox-should-improve-your-scrolling-performance-and-responsiveness.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65689-1-1.html 上篇帖子: Windows 7新功能 下篇帖子: Windows 7:设置解决IPv6访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表