android 电池保护,省电

谈到如何让程序耗电低,必须要了解什么样的操作最耗电。

1.后台程序唤醒休眠手机

2.大量数据传输

3.网络模式切换

4.解析文字数据没有实时的regex


找到原因以后再归纳解决的办法

网络方面

1.检查网络,等待wifi或者数据连接。只在连接网络时才做更新处理

2.使用高效率的数据格式和解析器

使用 stream 解析替代 tree

多使用二进制格式发送请求

减少往返服务器次数,获得更佳用户体验

尽可能使用GZIP压缩文字数据


前台程序

1.唤醒锁非常重要

选择最底层的锁,加个超时处理,预防不可预料的bug

使用android:keepScreenOn保证正确性

2.回收java对象,特别是复杂的对象

尽管java也有GC机制,最好还是手动处理部分可能产生的垃圾(注意同步问题,在UI线程是安全的)

XmlPullParserFactory 与BitmapFactory
Matcher.reset(newString)
StringBuilder.setLength(0)

在ListView里很好的运用了回收策略

3.使用网络粗定位比GPS消耗低

GPS跟唤醒锁一样,没有释放,将一直运行。

4.浮点运算消耗高

做大量地理经纬度运算时使用microdegrees

// GeoPoint returns value 37392778, -122041944
double lat = GeoPoint.getLatitudeE6() / 1E6;
double lon = GeoPoint.getLongitudeE6() / 1E6;
用DisplayMetrics做运算时,尽量使用缓存。

5.加速传感器,磁性传感器


后台程序

1.Service应该是短暂的,不应该是守护进程(占用内存)

2.使用AlarmManager或者广播唤醒触发(结束时别忘了stopself)


总结:

使用高效的解析方式和GZIP来充分利用网络与CPU资源

用AlarmManager与<receiver>代替"poll"或者"sleep"状态的Service(不使用时将其禁止,再集中唤醒)

在良好的网络状态下进行数据传输

提供用户管理背景的行为

原文地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值