首页 > 其他分享 >Android超复杂布局加载速度优化

Android超复杂布局加载速度优化

时间:2024-07-24 11:07:46浏览次数:9  
标签:linearContainer 布局 50 postDelayed 速度 Android 优化 加载

一、概述

  有时候由于实际业务的需要,或者产品经理或设计师考虑的不够全面,会导致某一个或某些页面的布局超级复杂。这些超级复杂的UI在经过程序员通过传统布局优化过后仍然是复杂的(优化布局层级、优化层级布局数量等)。

  这就会导致布局加载速度过于缓慢。直接的结果就是打开Activity的速度回变慢,测试没发接受会被打回。

二、思路及实践

  思路:

    在没有更好的优化措施下,我们可以使用分步加载。即:如果一次性加载会使布局的渲染速度缓慢,那么我们就把布局拆分为多个小布局,分步按照时间顺序进行加载。

  实践:

      1.住布局文件中只保留骨架(保证Activity的打开速度不受影响)

      2.使用LayoutInflater.from(context).inflater加载拆分好的小布局

      3.在数据加载成功后将小布局的ViewGroup通过root.addView的形式添加进容器布局中

      4.此时有个重中之重。如果你的小布局很多且是串行加载进去且没有时间间隔,则布局的显示速度依然是和缓慢的的

      5.解决4的问题的关键就在于,分步、定时、有序的加载。即:加载A布局结束50毫秒后加载B布局,B布局加载结束50毫秒后加载C布局,依次类推。

      6.这利用时间来换取加载速度加速布局的显示是一个相对能够接受的方案。

  示例代码如下(参考):

/**
     * 定时分步加载(防止由于布局复杂导致cpu过载)
     */
    private fun loadLayouts() {
        linearContainer.postDelayed({
            addBaseInfoLayout()
            linearContainer.postDelayed({
                addInfoOrgFrameLayout()
                linearContainer.postDelayed({
                    addInfoSuperiorAndSubordinateLayout()
                    linearContainer.postDelayed({
                        addInfoBottomGuideLayout()
                    }, 50)
                }, 50)
            }, 50)
        }, 50)
    }

 

标签:linearContainer,布局,50,postDelayed,速度,Android,优化,加载
From: https://www.cnblogs.com/tony-yang-flutter/p/18320423

相关文章

  • Android13 控制设置界面 双栏显示或单栏显示
    Android13设置界面会判断当前屏幕的大小,如果是大屏,则为双栏显示!./packages/apps/Settings/src/com/android/settings/homepage/SettingsHomepageActivity.java@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(save......
  • Android 13 大屏显示时关于SystemUI和Launcher3问题
    当系统运行在大屏上时,原来显示SystemUI导航栏的位置会变成Launcher3的任务栏,然后导航栏的3个按键显示靠右下角显示1.先看SystemUI的导航栏为什么会消失,移动/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.javapublicvoidcreateNavigationBar......
  • Toga 应用程序图标在 Android 上不显示:如何修复?
    我正在使用Toga开发Android应用程序,并为该应用程序设置了图标,但它无法正确显示。这是我所做的:放置图标文件:我的项目的资源目录中有一个PNG图标文件(F.png)。更新了main函数:我在main函数中指定了图标路径为icon='resources/F.png'。构建应用程序:我运行了Briefc......
  • 为什么重新加载后“globals()”中会出现未声明的变量,并且使用它们来识别重新加载是否
    我发现重新加载模块时下面的代码片段test出乎意料地已经在globals()/locals()中定义了所有变量。为什么会发生这种情况?我注意到了这个"xxx"inlocals()模式|||BlenderPython脚本中有很多,因为人们通常使用它来检查模块之前......
  • 基于树种算法优化的TSP问题求解
    智能优化算法应用:基于树种算法的TSP问题求解-附代码文章目录智能优化算法应用:基于树种算法的TSP问题求解-附代码1.TSP问题3.树种算法4.实验参数设定5.算法结果6.Matlab代码7.Python代码摘要:TSP是数学领域内一道著名的难题之一,如何求解一直是学术界研究的热点问......
  • 基于平衡优化器算法优化的TSP问题求解
    智能优化算法应用:基于平衡优化器算法的TSP问题求解-附代码文章目录智能优化算法应用:基于平衡优化器算法的TSP问题求解-附代码1.TSP问题3.平衡优化器算法4.实验参数设定5.算法结果6.Matlab代码7.Python代码摘要:TSP是数学领域内一道著名的难题之一,如何求解一直是......
  • 单调队列优化DP
    通法:写的时候要灵活变通(可以考虑类似于双指针的技巧,如跳房子)。P3957[NOIP2017普及组]跳房子套个二分,然后由于与位置相关,所以维护一个左端点和右端点,右端点考虑最短步长会不会跳过头,左端点考虑最长步长会不会跳不到。修剪草坪满足连续性质,所以一次考虑一段,\(f_i\)保证\(......
  • 探索Java虚拟机优化技术:从基础到高级
    探索Java虚拟机优化技术:从基础到高级大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java虚拟机(JVM)的优化技术,从基础到高级,为Java程序的高效运行提供全面指导。一、JVM概述Java虚拟机是Java程序的运行环境,负责加载字节码、执行代码、......
  • 深度模型中的优化 - 引言篇
    序言在人工智能与机器学习的广阔领域中,深度模型作为核心技术之一,正引领着智能应用的新纪元。深度模型通过构建多层神经网络,模拟人脑的学习与推理过程,以处理复杂的数据模式与任务。然而,这些强大能力的背后,离不开高效的优化算法作为支撑。优化,作为深度模型训练的核心环节,旨在......
  • Aquila优化算法(基本原理+matlab源代码)—— 基于Aquila Optimizer原始论文分析
    Matlab源代码位于:AquilaOptimizer:Ameta-heuristicoptimizationalgorithm-FileExchange-MATLABCentral(mathworks.cn)1Aquila优化算法AO是一种基于种群优化方法,受启发于Aquila捕获猎物的方式。Aquila捕获猎物的方式主要有四种:(1)有垂直弯曲的高空翱翔(2)用短......