Android性能优化方案

1.启动优化: application中不要做大量耗时操作,如果必须的话,建议异步做耗时操作
2.布局优化:使用合理的控件选择,少嵌套。(合理使用include,merge,viewStub等使用)
3.apk优化(资源文件优化,代码优化,lint检查,.9.png,合理使用shape替代图片,webp等)
4.性能优化,网络优化,电量优化:
避免轮询,尽量使用推送。
应用处于后台时,禁用某些数据传输
限制访问频率,失败后不要无限重连
选用合适的定位服务(GPS定位,网络定位,被动定位)
使用缓存
startActivityForResult替代发送广播
5.内存优化:
循环尽量不使用局部变量
避免在onDraw中创建对象,onDraw会被频繁调用,容易造成内存抖动。循环中创建大的对象,也是如此。
不用的对象及时释放
数据库的cursor及时关闭
adapter使用缓存
注册广播后,在生命周期结束时反注册
及时关闭流操作
图片尽量使用软引用,较大的图片可以通过bitmapFactory缩放后再使用,并及时recycler。另外加载巨图时不要 使用setImageBitmap或setImageResourse或BitmapFactory.decodeResource,这些方法拿到的都是bitmap的对象,占用内存较大。可以用BitmapFactory.decodeStream方法配合BitmapFactory.Options进行缩放
避免static成员变量引用资源耗费过多实例
避免静态内部类的引用

具体可以参考:Android:最全面&详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)

补充电量优化:Android 电量优化概览 

Android电量/功耗优化指南

几个常用的性能测试工具:Prefetto, Emmagee,Systarce。如果需要更加深入直观具体的分析可以使用这几个工具。教程很多,直接搜就好。

工具推荐教程:Perfetto详细解析

Android 性能测试工具- Emmagee 

如果不想下载这些测试工具,也可以用AS自带的检测工具:

AndroidStudio自带的内存泄漏检测工具Profiler:

1.用Android Studio打开当前应用项目,连接手机,打开当前项目App;

点击编辑器上面的这个图标启动应用,就可以看到底部的Profiler视图显示的CPU,内存,网络的使用情况:(如果底部没有Proflier视图,可以在View->Tool Windows->Profiler调出)

 2、 开启完成,已连接。此时正常使用你的App功能,把可能出现内层泄漏的模块测试一下;

3.测试完成,直接点击MEMORY,选择capture_heap dump,然后点击record。记录下你的测试的内层泄漏日志

4.第3步生成内层泄漏日志之后,后面会显示内层泄漏个数和方法列表。如果Leaks的数目不是0,就会出现内层泄漏个数并显示黄色叹号。这个时候找到下方显示黄色叹号的方法类。右键找到对应references方法。再根据references对应的类名,找到在项目中调用它的地方。然后就找到内层泄漏的地方啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/18036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同时安装python2 和python3

最近的项目因为工具的原因 需要同时安装python2 和python3 我又想学着使用python 写东西 导致遇到了很多问题 记录下来 1 同时安装 python2 和python 1.1 安装完把/确认 Path 环境变量里 同时有python2,python2\Scripts和python3 ,python3\Scripts四个环境变量 修改python3…

3步骤找回丢失文件!EasyRecovery让你轻松应对数据灾难!

EasyRecovery:数据丢失的终结者,您的数字世界守护神 在数字化时代,数据已经成为我们生活的一部分。无论是个人照片、重要文件还是企业资料,数据都扮演着重要的角色。然而,意外删除、格式化、系统崩溃或病毒攻击等原因导…

云易办springboot+vue后端

springbootvue云易办后端项目完成 一.创建项目 创建父项目&#xff1a;yeb&#xff0c; 使用spring Initializr&#xff0c;完成创建之后删除无用文件夹&#xff0c;作为父项目 添加packaging <packaging>pom</packaging>二.创建子模块&#xff1a;yeb-server …

Day 56 647. 回文子串 516.最长回文子序列

回文子串 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视作不同的子串。 示例 1&#xff1a; 输入&#xff1a;“abc”输出&#xff1a;3解释&#xf…

蓝桥杯—SysTick中断精准定时实现闪烁灯

在嵌入式系统中&#xff0c;SysTick_Handler 是一个中断服务例程&#xff08;Interrupt Service Routine, ISR&#xff09;&#xff0c;用于处理 SysTick 定时器的中断。SysTick 定时器通常用于提供一个周期性的定时中断&#xff0c;可以用来实现延时或者周期性任务。 SysTick…

SQL 语言:数据控制

文章目录 概述授权&#xff08;GRANT)销权&#xff08;REVOKE&#xff09;总结 概述 SQL语言中的数据控制权限分配是数据库管理的重要组成部分&#xff0c;它涉及到如何合理地为用户分配对数据库资源的访问和使用权限。 权限类型&#xff1a;在SQL中&#xff0c;权限主要分为…

【Python-OS】os.path.splitext()

作用&#xff1a;将文件路径分割成文件名和扩展名两部分。 slide_id, _ os.path.splitext(slide) print("slide:") print(slide) print("slide_id:") print(slide_id)注&#xff1a; slide是文件名&#xff0c;可以自行赋值

【IT小知识】堡垒机支持哪些私有云平台?

随着企业对网络安全的重视&#xff0c;以及等保政策的要求&#xff0c;越来越多的企业打算采购堡垒机。但不少企业对于堡垒机了解不多&#xff0c;一些小伙伴在问&#xff0c;堡垒机支持哪些私有云平台&#xff1f; 堡垒机支持哪些私有云平台&#xff1f; 【回答】&#xff1a…

数据分析必备:一步步教你如何用Pandas做数据分析(10)

1、Pandas 文本处理 Pandas 文本处理操作实例 在本章中&#xff0c;我们将使用基本的Series / Index讨论字符串操作。在随后的章节中&#xff0c;我们将学习如何在DataFrame上应用这些字符串函数。 Pandas提供了一组字符串函数&#xff0c;可以轻松地对字符串数据进行操作。最…

Talken - 语音命令系统

Talken - 语音命令系统 通过集成最先进的语音命令系统 Talken,释放游戏的全部潜力。 借助 Talken,您可以让玩家通过语音命令控制动作,从而重新定义游戏体验。 观看角色移动并对语音指令做出实时反应,模糊游戏与现实之间的界限。 主要特征: 🗣️ 语音驱动的游戏玩法:…

几个原则

&#xff08;1&#xff09; 成功是成功之母&#xff0c;失败不是成功之母。100分的试卷一模一样&#xff0c;不及格的试卷千奇百怪。向成功者学习。 不要研究失败&#xff0c;因为研究了一万个失败的原因&#xff0c;也不能找到一把成功的钥匙。 &#xff08;2&#xff09; 要定…

自由应用大本营?开源免费的Android应用商店:F-Droid Client

F-Droid Client&#xff1a;拥抱开源&#xff0c;守护隐私&#xff0c;让自由软件成为您生活的一部分- 精选真开源&#xff0c;释放新价值。 概览 F-Droid Client是一个开源的Android应用商店&#xff0c;它在GitHub上免费提供。这个项目致力于收集和展示各类自由及开源软件&a…

“星战之父”乔治・卢卡斯吐槽好莱坞“几乎没有原创思维”,AI 将“不可避免”用于电影制作

《星球大战》系列的创作者乔治・卢卡斯&#xff08;George Lucas&#xff09;在 1977 年奠定了电影制作传奇人物的地位&#xff0c;他对当今电影的状况及其发展方向有一些自己的看法。 他在 2024 年戛纳电影节上谈到了当前的电影行业。现年 80 岁的卢卡斯在接受法国媒体 Brut …

C# 读取 CSV 文件的方法汇总

文章目录 1. 使用System.IO命名空间中的类2. 处理标题行和指定列3. 使用CsvHelper库4. 高级功能和异常处理5. 使用 LINQ6. 总结 CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff09;文件是一种简单的文本文件格式&#xff0c;用于存储表格数据。在C#中&a…

微服务架构-数据共享设计模式

微服务架构-数据共享设计模式 每个微服务拥有自己的数据库&#xff0c;可以独立地进行数据库架构设计、部署和维护。这种是属于常规的方式&#xff0c;不受其他微服务的影响&#xff0c;具有高度的自治性。 然而&#xff0c;在将单体应用拆分成微服务时&#xff0c;可能会遇到…

“盲人独立生活技能提升方案”:科技点亮希望之光

在追求平等与包容的社会进程中&#xff0c;盲人群体的独立生活能力提升成为了重要议题。随着科技的飞速发展&#xff0c;一款名为“蝙蝠避障”的辅助软件应运而生&#xff0c;以其独特的实时避障和拍照识别功能&#xff0c;为盲人在旅行乃至日常生活中开辟了新的可能。这不仅是…

Golang原生http实现中间件

Golang原生http实现中间件 中间件&#xff08;middleware&#xff09;&#xff1a;常被用来做认证校验、审计等 大家常用的Iris、Gin等web框架&#xff0c;都包含了中间件逻辑。但有时我们引入该框架显得较为繁重&#xff0c;本文将介绍通过golang原生http来实现中间件操作。全…

《中国科技投资》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答&#xff1a; 问&#xff1a;《中国科技投资》期刊什么级别&#xff1f; 答&#xff1a;国家级 问&#xff1a;《中国科技投资》期刊是核心期刊吗? 答&#xff1a;不是&#xff0c;是万方维普收录的正规期刊。 主管单位&#xff1a;中国信息协会 主办单位&#…

【云原生_K8S系列】认识 Kubernetes

在当今数字化转型的浪潮中&#xff0c;企业对于构建高效、灵活的软件架构有了更高的期望。而在这个迅速变化的环境中&#xff0c;容器化技术如雨后春笋般涌现&#xff0c;为解决传统部署和管理软件所带来的挑战提供了一种全新的解决方案。在众多容器编排工具中&#xff0c;Kube…

5G专网驻网失败分析(suci无效)

suci 5G终端第一次驻网时&#xff0c;注册消息Registartion request中携带的5GS mobile identity要携带suci类型的mobile identity。 注册消息协议规范见5G NAS 协议3gpp TS24.501 8.2.6 Registration request。 suci协议规范参见3gpp TS24.501 9.11.3.4 5GS mobile identity …