通常情况

  • 通常程序的UI不太复杂,我们会直接加载这些UI信息
复杂的UI
  • 加载的元素就相对多一些。
  • 加载的数据相对多。
  • 因为UI元素和数据元素都比较多,加载的时间相对多。

可视者优先加载

  • 不是默认的加载顺序,而是有选择的加载一些首先用户看到的UI,再去加载暂时没有看到的。
  • 例如1:
    • 当Launcher启动的时候,在桌面上会有默认的5个屏幕的widget UI,通常的一般思考是从左到右,依次加载,但是,我们可以首先加载用户所看到的当前屏,也就是说首先加载当前页,然后加载第1,2,4,5页。
    • 一般的加载方式
    • Launcher实际的加载方式
    • 加载相关的code处理
      • // once for the current screen
        for (int i = 0; i < N; i++) {
        final LauncherAppWidgetInfo widget = sAppWidgets.get(i);
        if (widget.screen == currentScreen) {//首先加载当前页
        mHandler.post(new Runnable() {
        public void run() {
        Callbacks callbacks = tryGetCallbacks(oldCallbacks);
        if (callbacks != null) {
        callbacks.bindAppWidget(widget);
        }
        }
        });
        }
        }
        // once for the other screens
        for (int i = 0; i < N; i++) {//再根据顺序,从第1页开始加载。
        final LauncherAppWidgetInfo widget = sAppWidgets.get(i);
        if (widget.screen != currentScreen) {
        mHandler.post(new Runnable() {
        public void run() {
        Callbacks callbacks = tryGetCallbacks(oldCallbacks);
        if (callbacks != null) {
        callbacks.bindAppWidget(widget);
        }
        }
        });
        }
        }
  • 例如2
    • 当Launcher程序启动的时候,会先判断,是在桌面还是menu(所有应用所在屏)这一屏,如果退出前在桌面,那么先加载桌面相关的,然后再加载menu。如果退出前记录的位置是在menu,那么先加载menu,后加载桌面。
    • 图示:
      • 情况1

      • 情况2
    • code:
      • if (loadWorkspaceFirst) {//step1,load the a
        loadAndBindWorkspace();
        } else {
        loadAndBindAllApps();
        }
        ....
        if (loadWorkspaceFirst) {//step2,load the b
        loadAndBindAllApps();
        } else {
        loadAndBindWorkspace();
        }

Code Fragment-UI加载策略之-可视者优先加载的更多相关文章

  1. mybatis 加载策略及注解开发

    1. 延迟策略 在需要用到数据时在加载相关数据,常用于一对多关系, 优点:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能, 缺点:当需要用到数据时,才会进行数据库查询,这样在大批量数据查 ...

  2. hibernate学习(6)——加载策略(优化)

    1. 检索方式 1  立即检索:立即查询,在执行查询语句时,立即查询所有的数据. 2 延迟检索:延迟查询,在执行查询语句之后,在需要时在查询.(懒加载) 2.  检查策略 1  类级别检索:当前的类的 ...

  3. Hibernate检索策略之延迟加载和立即加载

    延迟加载:延迟加载(lazy load懒加载)是当在真正需要数据时,才执行SQL语句进行查询.避免了无谓的性能开销. 延迟加载分类:  1.类级别的查询策略 2.一对多和多对多关联的查询策略 3.多对 ...

  4. 【死磕 Spring】----- IOC 之 Spring 统一资源加载策略

    原文出自:http://cmsblogs.com 在学 Java SE 的时候我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Reso ...

  5. hibernate框架学习之数据抓取(加载)策略

    Hibernate获取数据方式 lHibernate提供了多种方式获取数据 •load方法获取数据 •get方法获取数据 •Query/ Criteria对象获取数据 lHibernate获取的数据分 ...

  6. hibernate框架学习第六天:QBC、分页查询、投影、数据加载策略、二级缓存

    QBC查询 1.简单查询 Criteria c = s.createCriteria(TeacherModel.class); 2.获取查询结果 多条:list 单挑:uniqueResult 3.分 ...

  7. Hibernate 加载策略得总结

    Hibernate 加载策略得总结 加载策略(优化查询): 策略种类: 延迟加载: 等到使用的时候才会加载数据. 立即加载: 不管使用不使用,都会立刻将数据加载. 策略的应用: 类级别的加载策略. 关 ...

  8. 【sping揭秘】6、IOC容器之统一资源加载策略

    Spring中的resource 我们先看看类之间的关系 注意我们的application是间接继承了resourceloader的,也就是说我们的application其实就是一个resourcel ...

  9. Loader拉取图片,由于redirect重定向,导致策略文件无效 设置checkPolicyFile后还是无效:需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志

    大家好,在这里分享一下flash里边处理redirect的方法. 一般而言,大家不会遇到这个问题,毕竟图片地址一般杠杠的,不会redirect.但昨天在拉取空间的照片就会出现redirect.神啊!! ...

随机推荐

  1. python 入门基础23 选课系统 项目

    选课系统 代码地址:github_code # 选课系统 # 角色:学校.学员.课程.讲师 # 要求: # 1. 创建北京.上海 2 所学校 # 2. 创建linux , python , go 3个 ...

  2. 基础图像处理之混合空间增强——(Java:拉普拉斯锐化、Sobel边缘检测、均值滤波、伽马变换)

    相信看过冈萨雷斯第三版数字图像处理的童鞋都知道,里面涉及到了很多的基础图像处理的算法,今天,就专门借用其中一个混合空间增强的案例,来将常见的几种图像处理算法集合起来,看能发生什么样的化学反应 首先,通 ...

  3. 洛谷 P5089: CodeForces #500 (Div. 1) B / 1012B : Chemical table

    题目传送门:洛谷P5089. 题意简述: 一张 \(n \times m\) 的表格,有一些格子有标记,另外一些格子没有标记. 如果 \((r_1,c_1),(r_1,c_2),(r_2,c_1)\) ...

  4. Extjs Window用法详解 2 打印具体应用

    Extjs 中的按钮元素 { xtype: 'buttongroup', title: '打印', items: [ me.tsbDel = Ext.create('Ext.button.Button ...

  5. 3种高效的Tags标签系统数据库设计方案分享

    需求背景 目前主流的博客系统.CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分.相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的 ...

  6. Scala 学习笔记(2)之类和对象

    Scala 的类大抵和 Java 是类似的,简单的例子如下: class MyClass { var myField : Int = 0; def this(value : Int) = { this ...

  7. Using MongoDB in C#

    In order to use MongoDB in C#, you can import MongoDB C# Driver to your project. It's best to create ...

  8. .NetCore 中扩展ExceptionLess 实现链式方法添加操作日志

    在使用ExceptionLess添加日志的时候,发现还是有一些写法上的个人觉得不爽的地方,比如添加Info日志 ExceptionlessClient.Default.CreateLog(source ...

  9. Linux系统运维笔记(二),Linux文件编辑命令

    Linux系统运维笔记 Linux文件编辑命令 首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式 接下来我们按i,然后键盘随便输入写内容. 然后按ESC重新进入到命令 ...

  10. nginx no input file specified

    今天在lnmp上调试php项目,之前已经在上面测试过tp5框架,可以正常访问.但是新项目由于项目中有些路径是写固定路径的.为了不去修改代码.配置新项目的时候,为新项目设置新的目录.问题就出现了,网页提 ...