通常情况

  • 通常程序的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. 第8月第22天 python scrapy

    1. cd /Users/temp/Downloads/LagouSpider-master ls ls ls lagou/settings.py cat lagou/settings.py ls p ...

  2. C++获取文件夹下所有文件名

    查找文件需要一个结构体和几个函数.结构体为struct _finddata_t,函数为_findfirst.findnext和_findclose. struct _finddata_t 这个结构体是 ...

  3. poj2056

    寻找向左凸的地方,每个左凸能让S数量-2.上边或下边如果是半个左凸的话则各对应-1 #include <cstdio> #include <cstring> #include ...

  4. 【转】java comparator 升序、降序、倒序从源码角度理解

    原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境jdk:1.7+ 前言之前我写过关于comparator的理解,但是都 ...

  5. 洛谷P4549裴蜀定理

    传送门 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...

  6. kafka脚本

    为了便于使用,kafka提供了比较强大的Tools,把经常需要使用的整理一下 开关kafka Server bin/kafka-server-start.sh config/server.proper ...

  7. flask你一定要知道的上下文管理机制

    前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__get ...

  8. Fiddler 常用功能总结

    1.fiddler相关配置   2.如何抓包 移动端 ①保持手机和电脑处于同一网络中 ②设置手机的代理为电脑当前所处网络的IP,端口号为:8888,eg:10.12.1.64:8888. ③ 启动ap ...

  9. Linux学习笔记:常用命令grep、iconv、cp、mv、rm

    本篇记录一些近期常用的命令. 一.grep过滤 grep过滤 不包含某些字符串 cat test.txt | grep -v '.jpg' 过滤jpg结尾的图片 cat test.txt | grep ...

  10. c语言字符串函数大全(转)

    函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio. ...