通常情况

  • 通常程序的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. linux磁盘空间查看inode

    服务器一般是要求长期连续运行的,自动执行任务生成的各种文件及日志,可能使空间占满,从而造成业务故障,所以要定时清理. 一般来说,Linux空间占满有如两种情况: 1.空间被占满了 用df -k 可以看 ...

  2. mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg

    mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg ...

  3. Java中包的介绍

    包的介绍: 未命名包 命名包 可以避免类名重复 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2. ...

  4. 树链刨分(class版)

    class版树链剖(刨)分 感谢沙华大佬的赞助 其实没什么太大变化,就是用了几次一顿乱指... CODE: #include<iostream> #include<cstdio> ...

  5. public private protect

    public 公有  使用public意味着声明public之后的成员对每个人都是可用的 private 私有  除非必须公开底层实现细目,否则就应该将所有的域指定为private protect 继 ...

  6. 删除MySQL binlog日志的方法

    对于比较繁忙的OLTP(在线事务处理)系统,由于每天生成日志量大,这些日志如果长时间不清除,将会对磁盘空间带来很大的浪费.因此,定期删除日志是DBA维护MySQL数据库的一个重要工作内容.下面跟大家分 ...

  7. SQL Server 2

    一.创建数据表 1.连接服务器: 2.右击“表”节点,选择“新建表”,即: 3.在弹出的“表设计器”中,输入表的列名.选择的数据类型及是否允许为空,即: 二.导入数据表 1.右击表名,弹出菜单,选择“ ...

  8. 关于spark ui中executor显示的内存量与设置的内存量不符的问题

    executor显示的内存量是实际执行程序使用的内存量,也就是排除bspark.storage.memoryFraction设置的比例外,然后使用的内存量. 默认是0.6,所以executory和dr ...

  9. JAVA死锁的写法

    在java开发中,避免不了要加锁控制程序逻辑,但加锁有可能导致死锁,造成线程永远卡死在等待释放锁,后面的代码得不到执行: 在java里,一般是通过synchronized关键字加锁,在jdk1.5版本 ...

  10. 002.VNC配置部署

    一 安装图形界面 在系统中安装相关图形界面 yum -y install xorg* yum -y install gnome* yum -y install glx*   或者 yum groupi ...