当前位置:首页 > 开发 > 移动开发 > 正文

Titanium性能优化:延迟加载DatePicker提高界面打开速度

发表于: 2013-05-03   作者:小熊2号   来源:转载   浏览次数:
摘要: 其实不算是性能优化了,顶多算矛盾转移:我在开发中发现,Titanium的DatePicker和TimePicker,初始化比较费时间。如果刚好在创建windows时初始化这两个Picker,window打开的速度会被严重拖累,造成难以忍受的性能问题。 比如下面的代码,相信各位看官不会陌生: function RankWindow() { var mainWnd = Ti.UI.c
其实不算是性能优化了,顶多算矛盾转移:我在开发中发现,Titanium的DatePicker和TimePicker,初始化比较费时间。如果刚好在创建windows时初始化这两个Picker,window打开的速度会被严重拖累,造成难以忍受的性能问题。
比如下面的代码,相信各位看官不会陌生:
function RankWindow() {
  var mainWnd = Ti.UI.createWindow(...);
  ...
  var datePicker = Titanium.UI.createPicker(...);
  mainWnd.add(datePicker);
  ...
  return mainWnd;
}

...

module.exports = RankWindow;

我刚开始一厢情愿的是:不管多慢,只要RankWindow初始化了:
  var RankWindow = require('/RankWindow');
  var rankWnd = new RankWindow();

那我
rankWnd.open();
,就会瞬间打开。

实际情况是:rankWnd.open()时,严重卡顿。我一个界面,20个控件,其中有4个picker,打开时间竟然高达1.5秒!

经过观察发现,似乎rankWnd.open的时候,才会去真正地调用createPicker!原因不清楚,只知道严重违反了“想当然”。发了这个帖子在官方论坛 http://developer.appcelerator.com/question/151937/window-not-initialized-until-it-is-open,希望知道的同学告诉我!

解决办法呢,就是把createPicker这样的操作,延迟到事件处理函数里面来执行。这样以来虽然打开picker时还有一点卡顿,但是总比4个picker叠加在一起,导致主窗口需要1.5秒钟打开要强多了!

Titanium性能优化:延迟加载DatePicker提高界面打开速度

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
延迟加载(lazy loading) 设计模式是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真
日期:2013-7-1 来源:GBin1.com RequireJS已经迎来了异步加载和AMD格式的巨大浪潮。XMLHttpRequest
用户打开网站的整个流程中,DNS解析时第一环,当用户输入域名并敲回车后,windows系统调用DNS clien
相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加
相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加
相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加
相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加
相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加
相信互联网已经越来越成为人们生活中不可或缺的一部分。ajax,flex等等富客户端的应用使得人们越加
转载自:http://www.phpv.net/html/1660.html 如有侵权,敬请告知 相信互联网已经越来越成为人们生
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号