zoukankan      html  css  js  c++  java
  • Code Fragment-UI加载策略之-可视者优先加载

    通常情况

    • 通常程序的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();
          }

  • 相关阅读:
    Maven相关
    Git学习:如何登陆以及创建本地代码仓库、并提交本地代码至Github(最简单方法)
    Git的安装与配置
    下载网址
    .net core 2.2 部署CentOS7(5)部署.net core mvc
    .net core 2.2 部署CentOS7(4)CentOS7下载并安装.NET SDK(软件开发工具包)
    .net core 2.2 部署CentOS7(3)安装Xshell操控CentOS7
    .net core 2.2 部署CentOS7(2)给虚拟机安装CentOS7
    .net core 2.2 部署CentOS7(1)安装虚拟机
    Winfrom 基于TCP的Socket服务端 多线程(进阶版)
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3206442.html
Copyright © 2011-2022 走看看