android电量优化(一)

网络优化

1、网络请求之前,检查网络连接。没有网络连接不进行请求

2、判断网络类型,针对特定的数据在特定的网络下请求。例如:大量数据传输的时候,在wifi下请求。wifi下下载数据耗电量只有2、3、4G的1/3.
3、使用效率高的解析工具。根据具体业务数据量的大小,选择合适的解析工具。例如android上面的协议解析一般推荐json。
4、使用GZIP压缩方式下载数据,能减少网络流量,缩短下载时间
5、合理使用缓存,避免重复操作
6、使用推送,代替循环请求
7、触发网络请求的操作,每次都会保持无线信号持续一段时间,我们可以把零散的网络请求打包进行一次操作,避免过多的无线信号引起的电量消耗。

8、使用JobScheduler ,它会根据当前的情况与任务,组合出理想的唤醒时间,例如等到正在充电或者连接到WiFi的时候,或者集中任务一起执行。

 自Android 5.0发布以来,JobScheduler 已成为执行后台工作的首选方式,其工作方式有利于用户。
应用可以在安排作业的同时允许系统基于内存、电源和连接情况进行优化。
JobSchedule的宗旨就是把一些不是特别紧急的任务放到更合适的时机批量处理。这样做有两个好处:
避免频繁的唤醒硬件模块,造成不必要的电量消耗。
避免在不合适的时间(例如低电量情况下、弱网络或者移动网络情况下的)执行过多的任务消耗电量;


控件优化:
1、对于自定义控件,我们可以通过canvas.clipRect()来帮助系统识别那些可见的区域。这个方法可以指定一块矩形区域,只有在这个区域内才会被绘制,其他的区域会被忽视。
2、避免嵌套太多层控件
3、合理使用include、merge


GC相关优化:
1、android的GC机制:Android里面是一个三级Generation的内存模型,最近分配的对象会存放在Young Generation区域,
当这个对象在这个区域停留的时间达到一定程度,它会被移动到Old Generation,最后到Permanent Generation区域。
2、执行GC操作的时候,任何线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行。
3、Android系统里面有一个Generational Heap Memory的模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作。例如,最近刚分配的对象会放在Young Generation区域,
这个区域的对象通常都是会快速被创建并且很快被销毁回收的,同时这个区域的GC操作速度也是比Old Generation区域的GC操作速度更快的。
4、避免GC频繁操作:
  a、避免内存抖动;Memory Churn内存抖动,内存抖动是因为大量的对象被创建又在短时间内马上被释放。
  b、瞬间产生大量的对象会严重占用Young Generation的内存区域,当达到阀值,剩余空间不够的时候,也会触发GC。
    即使每次分配的对象占用了很少的内存,但是他们叠加在一起会增加Heap的压力,从而触发更多其他类型的GC。这个操作有可能会影响到帧率,并使得用户感知到性能问题。
    c、避免在for循环,onDraw中创建对象,无法避免的可以创建对象池,然后在不使用的时候释放
5、主动回收java对象,特别是较大的,例如bitmap。减少GC的工作频率

 

其他:
1、尽量不要使用浮点运算
2、定位可以使用wifi和移动网络基站,不要使用GPS。



参考:

http://www.cnblogs.com/lipeil/p/5222917.html

http://www.jianshu.com/p/ded0ed6fac3d  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二十六画生的博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值