Android 性能优化

性能优化

一: App 运行流畅性,不卡顿
二: 省电,省流量
三:稳定,不闪退
四:App包尽量小

卡顿原因

Android 应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现:
1:UI的绘制, 页面嵌套复杂,刷新不合理,
2:数据量大,一种是数据在主线程处理,数据量过大,导致内存溢出.引起卡顿

渲染

在屏幕上显示,其实要经过一系列的过程,Android 应用程序把经过测量、布局、绘制后的 surface 缓存数据,通过 SurfaceFlinger 把数据渲染到显示屏幕上, 通过 Android 的刷新机制来刷新数据。也就是说应用层负责绘制,系统层负责渲染,通过进程间通信把应用层需要绘制的数据传递到系统层服务,系统层服务通过刷新机制把数据更新到屏幕上。
你的 Layout 太过复杂,层叠太多的绘制单元,无法在 16ms 完成渲染,最终引起刷新不及时。
View的绘制三大核心步骤:Measure、Layout、Draw。具体是如何实现的建议看一下View的源码,这里我就不多说了;如果绘制的层级深,页面复杂,在Measure、Layout这二个步骤要花费大量的时间;这样也会造卡顿现象;

优化方案

1:不要在主线程进行网络访问/大文件的IO操作
2:绘制UI时,尽量减少绘制UI层次;减少不必要的view嵌套
3占位view 使用ViewStub,当加载的时候会引用,不加载的时候隐藏
4: 尽量使用Linearlayout ,不使用RelativeLayout,因为Linearlayout 测量一次,而RelativeLayout会二次测量
5: 动画在子线程加载,主线程避免过多操作

耗电优化

1:合理的使用wack_lock锁(唤醒锁(),wake_lock锁主要是相对系统的休眠而言的,意思就是我的程序给CPU加了这个锁那系统就不会休眠了,这样做的目的是为了全力配合我们程序的运行

保持屏幕一直亮:
第一种: 代码中
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
第二种:xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
...
</RelativeLayout>

2:数据在网络上传输时,尽量压缩数据后再传输

监测耗电量

Battery Historian 是一款由 Google 提供的 Android 系统电量分析工具,是一款图形化数据分析工具,直观地展示出手机的电量消耗过程,通过输入电量分析文件,显示消耗情况

APP包优化方案

1:res资源:只使用一套图片,使用高分辨率的图片。
2:图片使用WebP(https://developers.google.com/speed/webp/)的格式(Facebook、腾讯、淘宝在用。)缺点:加载相比于PNG要慢很多。 但是配置比较高。工具:http://isparta.github.io/
3:代码优化,删除无用代码:无用库

内存泄漏场景

单例中引用的上下文Context,引用了Activity中的Context, 这样会造成内存泄漏,要引用Application中的Context;

资源性对象未关闭。比如Cursor、File文件等,往往都用了一些缓冲,在不使用时,应该及时关闭它们。

注册对象未注销。比如事件注册后未注销,会导致观察者列表中维持着对象的引用。

类的静态变量持有大数据对象。

非静态内部类的静态实例。
Handler临时性内存泄漏。如果Handler是非静态的,容易导致 Activity 或 Service 不会被回收。

容器中的对象没清理造成的内存泄漏。

WebView。WebView 存在着内存泄漏的问题,在应用中只要使用一次 WebView,内存就不会被释放掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一声紫金,一生紫金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值