您的位置:首页 > 移动开发 > Android开发

android电量优化(一)

2017-05-18 11:20 176 查看
网络优化

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  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 电量 优化