当前位置: 首页 > news >正文

Android系统-性能-优化概述

目录

引言:

APP优化:

网络优化:

内存优化:

卡顿优化:


引言:

先大概对Android性能优化做一个简单分类和梳理。由于性能影响因素多,比如本文分类的APP,内存,网络,卡顿都是互相影响的。卡顿应该是用户最直观可见的性能问题了。

APP优化侧重于启动,UI绘制以及资源优化这三个方面考虑

内存优化侧重于内存抖动,内存泄露,扩大内存方面考虑

网络优化则是从网络请求,数据压缩的方面考虑

上面这三个方面的优化就有利于我们系统卡顿问题的解决。刚才说的卡顿是用户直观感知的,从显示的角度看卡顿问题的话就是丢帧掉帧引起的。本篇暂时不展开与显示刷新原理方面的内容说明。


APP优化:

    UI优化(布局优化,绘制优化)
        布局优化:RelativeLayout替代LinearLayout,作为默认根布局。降低嵌套布局,提高渲染效率
        <include>标签
        <ViewStub>标签加载不常用的布局,延迟加载
        <merge>标签减少布局的嵌套层次
    安装包优化(res资源文件优化)
        减小体积
        res资源优化
        代码优化:
        lib资源优化:
        assets资源优化
        代码混淆
        使用proGuard代码混淆工具,包括压缩,优化,混淆等功能
        插件化:功能模块放入服务器,需要时再加载
    启动优化:

        冷启动,热启动,耗时线程用子线程去执行

        启动逻辑,加载逻辑;
        非必要的对象可以延迟初始化;
        不要创建全局静态对象,而是转向单例模式,这样应用进程只需要第一次时初始化
        考虑依赖注入框架
        

网络优化:

    合并网络请求,减少网络请求
    避免DNS解析
    大量的数据加载采用分页的方式
    网络数据采用GZIP压缩
    加入网络数据缓存,避免频繁请求网络
    上传图片时,在必要的时候压缩图片
    

内存优化:

    避免内存泄露:长生命周期的对象引用了短生命周期的对象。堆上分配的对象已经不再使用了,但是GC收集器无法对其进行回收。
    静态变量问题:将内部类设为静态内部类或独立出来使用context.applicationContext()
    单例模式:传参context.getApplicationconText()
    属性动画:Activity.onDestroy调用Animation.cancel()
    Handler:使用静态内部类+WeakReference弱引用;当内部类结束生命周期时清空消息队列
    线程问题:将AsyncTask和Runnable设为静态内部类或独立出来,在线程内部采用弱引用保存Context引用
    资源未关闭:在Activity销毁时即使关闭或者注销:
        BroadcastReceiver调用unregisterReceiver()
        Cursor,Stream,file:调用close
    Adapter问题:
        不使用缓存而只依靠getView()每次重新实例化Item,会给GC制造压力
        在构造Adapter时使用convertView
    WebView问题:webView和Activity在同一线程
    集合问题:map等有静态引用,没有做删除操作
    扩大内存:清单文件中Application添加 largeHeap=“true”属性;同一个应用开启多个进程来运行,这样可以增大应用的总内存空间        


卡顿优化:

    不要在主线程进行网络访问或者大文件IO操作
    优化布局
    优化绘制:避免不必要的重绘以及过度绘制
        onDraw不要创建新的局部对象。
        onDraw方法不要做耗时操作
 


 

相关文章:

Android系统-性能-优化概述

目录 引言&#xff1a; APP优化&#xff1a; 网络优化&#xff1a; 内存优化&#xff1a; 卡顿优化&#xff1a; 引言&#xff1a; 先大概对Android性能优化做一个简单分类和梳理。由于性能影响因素多&#xff0c;比如本文分类的APP&#xff0c;内存&#xff0c;网络&…...

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part II

用Cmake build OpenCV后&#xff0c;在VS中查看OpenCV源码的方法 Part II 用Cmake build OpenCV后&#xff0c;在VS中查看OpenCV源码的方法&#xff08;环境VS2022openCV4.8.0&#xff09; Part I_松下J27的博客-CSDN博客 在上一篇文章中&#xff0c;我用cmake成功的生成了ope…...

深度学习5:长短期记忆网络 – Long short-term memory | LSTM

目录 什么是 LSTM&#xff1f; LSTM的核心思路 什么是 LSTM&#xff1f; 长短期记忆网络——通常被称为 LSTM&#xff0c;是一种特殊的RNN&#xff0c;能够学习长期依赖性。由 Hochreiter 和 Schmidhuber&#xff08;1997&#xff09;提出的&#xff0c;并且在接下来的工作中…...

LabVIEW开发灭火器机器人

LabVIEW开发灭火器机器人 如今&#xff0c;自主机器人在行业中有着巨大的需求。这是因为它们根据不同情况的适应性。由于消防员很难进入高风险区域&#xff0c;自主机器人出现了。该机器人具有自行检测火灾的能力&#xff0c;并通过自己的决定穿越路径。 由于消防安全是主要问…...

1.2 Kali Linux的网络配置

前言 最新文章请见此处&#xff0c;持续更新&#xff0c;敬请订阅&#xff01;https://blog.csdn.net/algorithmyyds/category_12418682.html 网络在如今的社会已是十分重要的媒介&#xff0c;如果没有网络&#xff0c;很多事情将难以办成。渗透测试也是一样——毕竟在攻击机…...

目标检测的训练过程

数据集准备(Dataset preparation): 收集或创建带有注释的数据集&#xff0c;其中包括图像或帧以及标注&#xff0c;指定了其中物体的位置和类别。标注通常包括边界框坐标&#xff08;x、y、宽度、高度&#xff09;和相应的类别标签。数据预处理&#xff1a; 将图像调整为模型能…...

软考高级系统架构设计师系列论文七十七:论软件产品线技术

软考高级系统架构设计师系列论文七十七:论软件产品线技术 一、摘要二、正文三、总结一、摘要 本人在测井行业的一个国有企业软件开发部工作,从2021年初开始,我陆续参加了多个测井软件开发项目,这些项目都是测井行业资料处理解释软件,具有很强的行业特征,其开发方向和应用…...

基于大语言模型知识问答应用落地实践 – 知识库构建(上)

01 背景介绍 随着大语言模型效果明显提升&#xff0c;其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型&#xff08;LLM&#xff09;知识召回&#xff08;Knowledge Retrieval&#xff09;的方式&#xff0c;在私域知识问答方面可以…...

一文1500字从0到1搭建 Jenkins 自动化测试平台

Jenkins 自动化测试平台的作用 自动化构建平台的执行流程&#xff08;目标&#xff09;是&#xff1a; 我们将代码提交到代码托管工具上&#xff0c;如github、gitlab、gitee等。 1、Jenkins要能够检测到我们的提交。 2、Jenkins检测到提交后&#xff0c;要自动拉取代码&#x…...

前端面试:【实际项目经验】团队协作、代码管理和Git命令梳理

在现代软件开发中&#xff0c;团队协作、代码管理和版本控制是至关重要的方面。本文将分享一些实际项目经验&#xff0c;重点关注团队协作、代码管理&#xff0c;以及Git版本控制的关键命令和最佳实践。 团队协作&#xff1a; 明确角色和责任&#xff1a; 在项目开始阶段&#…...

关于异数OS服务器CPU效能分析工具

该工具发布背景 近年来&#xff0c;国产服务器CPU产业的逐渐发展&#xff0c;但由于专业性较差&#xff0c;与国外存在40年以上技术差距&#xff0c;一些服务器CPU厂商利用信息差来制造一些非专业的数据夸大并虚假宣传混淆视听&#xff0c;成功达到劣币驱良币的目标&#xff0…...

十四、pikachu之XSS

文章目录 1、XSS概述2、实战2.1 反射型XSS&#xff08;get&#xff09;2.2 反射型XSS&#xff08;POST型&#xff09;2.3 存储型XSS2.4 DOM型XSS2.5 DOM型XSS-X2.6 XSS之盲打2.7 XSS之过滤2.8 XSS之htmlspecialchars2.9 XSS之href输出2.10 XSS之JS输出 1、XSS概述 Cross-Site S…...

五分钟了解最短路径寻路算法:Dijkstra 迪杰斯特拉

最短路径查找算法 寻路算法在生活中应用十分常见。本文实现的是关于图的最短路径查找算法。 该算法比较常见于游戏和室内地图导航。 实现 例子&#xff1a;几个节点之间&#xff0c;相连接的线段有固定长度&#xff0c;该长度决就是通过代价。查找到花费最少的路径。该图结构…...

【ARM】Day8 中断

1. 思维导图 2. 实验要求&#xff1a; 实现KEY1/LEY2/KE3三个按键&#xff0c;中断触发打印一句话&#xff0c;并且灯的状态取反 key1 ----> LED3灯状态取反 key2 ----> LED2灯状态取反 key3 ----> LED1灯状态取反 key3.h #ifndef __KEY3_H__ #define __KEY3_H__#in…...

大数据Flink(六十八):SQL Table 的基本概念及常用 API

文章目录 SQL & Table 的基本概念及常用 API 一、​​​​​​​一个 Table API\SQL任务的代码结构...

算法练习- 其他算法练习6

文章目录 数字序列比大小最佳植树距离文艺汇演计算误码率二维伞的雨滴效应阿里巴巴找黄金宝箱4 数字序列比大小 A、B两人一人一个整数数组&#xff0c;长度相等&#xff0c;元素随即&#xff1b;两人随便拿出一个元素&#xff08;弹出&#xff09;&#xff0c;比较大小&#x…...

ModaHub魔搭社区:WinPlan经营大脑管理中心

角色权限 展示设置的角色,及对应的成员及权限点。角色、成员、权限点可自由配置;管理员的角色不可删除、权限点默认全部不可更改。 WinPlan决策系统 算力 阿里云 腾讯云 AWS亚马逊 框架 业务数据基座 WinPlan垂直大模型 模型 分...

滑动窗口系列4-Leetcode322题零钱兑换-限制张数-暴力递归到动态规划再到滑动窗口

这个题目是Leecode322的变种&#xff0c;322原题如下&#xff1a; 我们这里的变化是把硬币变成可以重复的&#xff0c;并且只有coins数组中给出的这么多的金币&#xff0c;也就是说有数量限制&#xff1a; package dataStructure.leecode.practice;import java.util.Arrays; i…...

Nginx全局配置

一、修改启动进程数 worker_processes 1; #允许的启动工作进程数数量&#xff0c;和你真实的cpu数量有关 1 worker_processes auto; #如果设置为auto 就是你真实的cpu数量 ps axo pid,cmd,psr,ni|grep nginx #可以看到 nginx的 worker数量 二、日制分割 [rootyuji ~]#…...

VUE笔记(四)vue的组件

一、组件的介绍 1、组件的作用 整个项目都是由组件组成 可以让代码复用&#xff1a;相似结构代码可以做成一个组件&#xff0c;直接进行调用就可以使用&#xff0c;提高代码复用性 可以让代码具有可维护性&#xff08;只要改一处&#xff0c;整个引用的部分全部都变&#xf…...

为AI智能体项目选择与接入高性价比大模型API服务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为AI智能体项目选择与接入高性价比大模型API服务 在构建AI智能体或自动化工作流时&#xff0c;开发者面临的核心挑战往往集中在两个…...

(良心整理)亲测好用的AI写作辅助平台,毕业生收藏备用

毕业季论文写作真的这么难吗&#xff1f;选题方向模糊、文献资料繁杂、写作进度缓慢、查重修改头疼、格式规范混乱…… 这份亲测好用的AI论文工具清单&#xff0c;涵盖中英文写作、全流程支持、专项功能、免费与高性价比选项&#xff0c;从开题构思到最终定稿全程护航&#xff…...

AI时代的“新文盲”:不会用提示词的技术人正在掉队

2026年的软件测试领域&#xff0c;正在经历一场前所未有的认知分化。这种分化不再是手工测试与自动化测试的界限&#xff0c;也不是代码能力的高低之别&#xff0c;而是在AI辅助工具全面渗透到测试工作流的今天&#xff0c;能否通过“提示词”&#xff08;Prompt&#xff09;精…...

NotebookLM风格崩塌的7个隐性信号:从语义漂移到角色失焦,一文诊断并修复

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM风格崩塌的诊断元框架 当NotebookLM在真实知识工作流中表现出响应失焦、引用漂移、上下文断裂或语义坍缩等现象时&#xff0c;“风格崩塌”并非界面缺陷&#xff0c;而是底层多模态对齐机制失…...

火狐渗透插件实战指南:15款专业工具高效赋能Web侦察与漏洞验证

1. 这不是普通浏览器插件合集&#xff0c;而是渗透测试人员的“外挂式侦察兵” 很多人第一次看到“火狐插件做渗透测试”这个说法&#xff0c;第一反应是&#xff1a;浏览器插件能干啥&#xff1f;改个User-Agent&#xff1f;抓个Cookie&#xff1f;顶多算个辅助小工具。我2016…...

一个电商项目 开发的完整流程是什么==从0 疑难杂症

--- 一、从0开始的完整流程&#xff08;时间顺序&#xff09;0&#xff09;立项&#xff1a;先定“能赚钱的最小闭环”先别谈技术&#xff0c;先定这4件…...

单物体最优抓取轨迹生成

基于 3D 位姿规划直线平滑抓取轨迹&#xff0c;包含趋近 - 抓取 - 复位三段最优运动路径&#xff0c;适配机械臂点位运动核心规划逻辑基准位&#xff1a;机械臂初始安全待机点趋近段&#xff1a;直线匀速靠近物体上方预备抓取点抓取段&#xff1a;垂直下落至物体抓取中心位姿抬…...

Kemono-scraper完整指南:从批量下载到智能管理的艺术收藏工具

Kemono-scraper完整指南&#xff1a;从批量下载到智能管理的艺术收藏工具 【免费下载链接】Kemono-scraper Kemono-scraper - 一个简单的下载器&#xff0c;用于从kemono.su下载图片&#xff0c;提供了多种下载和过滤选项。 项目地址: https://gitcode.com/gh_mirrors/ke/Kem…...

Office自定义界面编辑器:打造你的专属Office工作台

Office自定义界面编辑器&#xff1a;打造你的专属Office工作台 【免费下载链接】office-custom-ui-editor Standalone tool to edit custom UI part of Office open document file format 项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor 你是否厌…...

如何在15分钟内完成Windows系统优化和软件批量安装:WinUtil完全指南

如何在15分钟内完成Windows系统优化和软件批量安装&#xff1a;WinUtil完全指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否曾为新…...