`

使用延迟实例化提高启动效率

    博客分类:
  • Flex
阅读更多

问题
我们要保证组件仅仅在需要显示在屏幕上的时候才被创建。
解决办法
为容器类设置创建方针队列并且根据需要对每个子组件使用creationIndex。
讨论
Container 类默认情况下仅仅在要显示组件的时候创建它,因为UIComponent 默认的
creationPolicy 值为auto。换句话说,当视图(view)设置成可视的时候,如果还没有创建
该视图,则组件会实例化此视图。creationPolicy 的其他可能值为none,意指,所有组件
将会创建、列队,这里的创建和列队指根据其creationIndex 值进行创建。creationIndex
是以0 起始的顺序数组,组件的子组件会根据这个顺序数组来创建。
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="600"
width="600">
<mx:Script>
<![CDATA[
private function changeViewStackCreation():void
{
viewStack.creationPolicy = (comboBox.selectedItem as
String);
viewStack.createComponentsFromDescriptors(true);
}
private function changeViewStack():void
{
viewStack.selectedIndex =
comboBoxChangeIndex.selectedIndex;
}
]]>
</mx:Script>
<mx:Fade alphaFrom="0" alphaTo="1" duration="4000"
id="fadeIn"/>
<mx:ComboBox dataProvider="{['none', 'all', 'queued',
'auto']}" change="changeViewStackCreation()"
id="comboBox"/>
<mx:ComboBox dataProvider="{[1, 2, 3, 4]}" x="150"
change="changeViewStack()" id="comboBoxChangeIndex"/>
<mx:ViewStack id="viewStack" width="400" height="300"
creationPolicy="none" y="100">
<mx:Canvas creationCompleteEffect="{fadeIn}"
creationIndex="0" backgroundColor="#0000ff"
id="canvas1">
<mx:LinkButton label="Link Button Number One"/>
</mx:Canvas>
<mx:Canvas creationCompleteEffect="{fadeIn}"
creationIndex="1" backgroundColor="#0000ff"
id="canvas2">
<mx:LinkButton label="Link Button Number Two"/>
</mx:Canvas>
<mx:Canvas creationIndex="2" id="canvas3"
creationCompleteEffect="{fadeIn}" backgroundColor
="#0000ff">
<mx:LinkButton label="Link Button Number Three"/>
</mx:Canvas>
<mx:Canvas creationIndex="3" id="canvas4"
creationCompleteEffect="{fadeIn}" backgroundColor
="#0000ff" >
<mx:LinkButton label="Link Button Number Four"/>
</mx:Canvas>
</mx:ViewStack>
</mx:Canvas>

分享到:
评论

相关推荐

    flex3的cookbook书籍完整版dpf(包含目录)

    3.15 节使用延迟实例化提高启动效率 3.16 节创建并控制可调整大小的容器 3.17节在TabNavigator内创建、启用和禁用TAB组件(TabControls) 3.18 节使用可关闭Tabs 创建一个TabNavigator 3.19 节创建和控制Alert 3.20 节...

    Java_提高弹簧启动测试效率.zip

    2. **延迟加载(Lazy Initialization)**:对于非核心业务的Bean,可以使用`@Lazy`注解,使其在首次使用时才进行实例化,而不是在启动时一次性创建。 3. **排除不必要的AutoConfiguration**:Spring Boot通过@...

    Windows 延时启动批处理脚本

    本篇文章将详细讲解如何创建一个延时启动批处理脚本,以及如何使用这个名为"Delay Run App.cmd"的特定脚本来在指定的秒级别延迟后启动应用程序。 首先,我们要理解批处理脚本的基本结构。一个批处理脚本本质上是一...

    Android应用启动界面的实例

    本实例将探讨如何在Android中创建一个启动界面。 首先,我们需要明白启动界面的核心功能:提高用户体验。在应用程序启动初期,后台可能需要进行一些初始化工作,如数据库加载、网络连接等,此时显示启动界面可以...

    JAVA-提高反射效率

    通过这些类,我们可以获取类的信息,实例化对象,以及动态调用方法和访问字段。 1. **缓存Class对象**:每次通过`Class.forName()`加载类都会带来一定的开销。为了提高效率,可以将常用的类对象缓存起来,避免频繁...

    C#使用Lazy延迟加载

    这个类主要用于实现延迟加载(Lazy Loading),它允许我们推迟对象的初始化,直到真正需要使用该对象时才会执行初始化过程。这种方式在处理大数据集合或者复杂对象时尤其有用,因为它可以避免在不必要时消耗宝贵的...

    Qt5使用动态库实例

    本文将深入探讨如何在Qt5环境中创建、链接和使用动态库,以提高程序的效率和可维护性。 首先,让我们理解动态库的基本概念。动态库在运行时被加载到应用程序中,而不是在编译时。这意味着多个应用程序可以共享同一...

    windows开机延时启动

    需要注意的是,开机自启动和开机延迟启动不能同时保留,否则将导致应用程序启动两个实例。因此,用户需要根据自己的需求,选择其中一个功能来实现应用程序的启动。 Windows 计划任务的优点在于可以实现应用程序的...

    利用Oracle JDBC连接池提高Web访问数据库的效率.pdf

    这种机制避免了频繁的连接创建和关闭,节省了系统资源,减少了网络延迟,并且提高了并发处理能力。 要使用Oracle JDBC连接池,开发者需要按照以下步骤进行: 1. 导入必要的库:在Java代码中,导入`javax.sql....

    android开机启动service

    - 需要考虑到电池效率和用户体验,避免无节制地使用开机启动服务,因为这可能会消耗大量资源。 - 从Android 8.0(API 级别26)开始,后台服务的启动受到限制,因此在这些版本上,你可能需要使用JobScheduler或...

    Spring源码学习六:bean初始化1

    这个方法的主要任务包括设置转换服务、处理LoadTimeWeaverAware类型的Bean、停止使用临时类加载器、冻结配置以及预实例化所有非延迟加载的单例Bean。 1. **转换服务初始化**: 如果容器中存在名为`CONVERSION_...

    安卓架构小工具app startup的使用-------让初始化代码更简单(csdn)————程序.pdf

    总之,App Startup 为 Android 应用提供了一种结构化、高效且易于管理的组件初始化方案,它降低了自定义初始化代码的复杂度,提高了应用程序的启动速度和用户体验。通过合理利用这个框架,开发者可以更好地控制初始...

    基于tcp的socket编程实例

    同时,调试和优化代码,例如处理并发连接、异常情况,以及提高通信效率,都是提升编程技能的关键。这个实例对于初学者来说是一个很好的起点,它可以帮助你理解网络编程的基本概念,并逐步深入到更复杂的网络应用开发...

    Python库 | lazy_object_proxy-1.6.0-cp36-cp36m-win_amd64.whl

    通过使用懒对象代理,我们可以避免在程序启动时就消耗大量资源,从而提高程序的启动速度和整体性能。 该库的工作原理是创建一个代理对象,这个代理对象在被访问时才去初始化实际的对象。在Python中,当我们调用代理...

    双用户自动启动方法

    为了提高效率和便捷性,有时我们需要实现所谓的“双用户自动启动”,即在主机系统启动时自动加载特定的虚拟机环境。本文将详细介绍如何设置和实现这一功能。 #### 二、基础知识 1. **虚拟机**: 虚拟机是一种通过...

    QT_C++单例模式懒汉+饿汉.rar

    2. **懒汉式单例**:懒汉式单例则是在第一次调用getInstance()方法时才进行实例化,所以也称为延迟实例化。这种方式在类加载时不实例化,只有在需要时才会创建。在多线程环境中,如果没有正确的同步机制,可能会导致...

    ARM系统Bootloader启动内核方式的实现

    虽然这种方法简单且易于实现,但在工业控制等对实时性要求较高的场景中,由于需要额外的时间来完成数据的拷贝,可能导致启动延迟增加,影响系统的实时性能。 ##### 2. NOR Flash本地执行方式 与RAM加载方式不同,...

    opcua实例程序

    优化则涉及减少通信延迟、提高数据处理效率等方面。 通过以上介绍,我们可以看到,"opcua实例程序"是一个涉及到OPC UA技术、西门子数控系统、客户端编程等多个方面的综合性项目,为开发者提供了一条实践OPC UA通信...

    k8s client-go源码分析 informer源码分析(2)-初始化与启动分析.doc

    nformerFactory 的结构体定义,它是 informer 的工厂类,负责创建并管理 informer 实例: ```go type sharedInformerFactory struct { ...这种设计大大减轻了对 API 服务器的压力,提高了系统的整体效率。

    理解linux下动态链接库延迟绑定.rar_lib_linux

    延迟绑定是一种优化技术,它使得程序在加载时并不立即解析所有对动态链接库的引用,而是在实际调用函数时才进行解析,从而提高程序启动速度和效率。 描述中的"linux lib binding,lazy"进一步强调了这个主题。...

Global site tag (gtag.js) - Google Analytics