禁用广播接收器

确保广播接收器在真正须要时才运行指令,在onResume中当中广播接收器,在onPause中禁用。

在manifest文件里声明广播接收器时,事先默认配置成禁用的

<receiver android:name=".BatterReceiver" android:enabled="false">

网络

1. 后台数据。后台传输数据时。推断ConnectivityManager的getBackgroundDataSetting()的返回值,假设为true。则进行后台传输数据,假设为false,则不进行后台传输数据

2. 数据传输,手机设备中最耗电的部件依次是:Wi-Fi-》3G-》CPU-》屏幕(都在最高负载时的数据),所以在数据传输时一定不要长时间的占用网络资源,而是应该突发性地传输一段时间内所需的全部资源,关于这个有一篇论文:http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=1N507ukp1ch,最后结论就是:The
single most important measure: transmit as much data as possible in a single burst and then end the connection.

1.使用GZIP压缩文本数据,使用GZIPInputStream类訪问数据

2.假设可能的话。使用JPEG而不是PNG的图片文件

3.使用匹配设备分辨率的资源(比方。不必为96x54大小的显示空间下载1920x1080的图片)

位置

1. 在不须要监听位置时注销位置监听器

2. 减小更新位置的频率

3. 使用合适的位置服务。android提供了三种位置服务,GPS、网络定位、被动定位(你的应用会等待其它应用。服务或系统组件发出定位请求,而后和其它监听器一起接受更新)

4. 使用Criteria类来筛选合适的定位服务

5. 使用最后已知位置,能够提高用户体验

传感器

减少传感器数据的更新频率来达到省电的目的

图形

在Android应用性能优化这本书中的第八章有专门的介绍

提醒AlarmManager

ELAPSED_TIME

ELAPSED_TIME_WAKEUP

RTC

RTC_WAKEUP

使用ELAPSED_TIME和RTC表示。计时完时假设设备没有被唤醒则等待设备被唤醒时才运行对应的动作

所以要尽量使用这两个參数

另外,使用AlarmManager的setInexactRepeating也能够达到省电的目的,主要差别是在系统怎样安排提醒到时,Android能够调整实际的触发事件。同一时候触发多个提醒(可能来自多个应用),这样的提醒更节能,系统也避免了出现不必要的唤醒。

WakeLock

获得wakelock之后一定要记得释放

为了防止出现故障,建议使用带超时的WakeLock.acquire()版本号,他会在超过时限后释放WakeLock。

假设用到的屏幕是和Activity中的View关联的,也能够在布局文件里使用XML属性android:keepScreenOn。

这样的方法的优点是,不必冒着忘记释放WakeLock的风险,交由系统处理。也不须要在manifest文件里设置权限

Android App优化之延长电池续航时间的更多相关文章

  1. Android App优化之ANR详解

    引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...

  2. 4.Android App 优化之消除卡顿

    转载:http://gold.xitu.io/post/582583328ac247004f3ab124 1, 感知卡顿 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI ...

  3. Android App优化建议(转载)

    假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比.耗电.耗内存.接下来就会得到用户的消极评论,最后名声也就臭了.即使你的应用设计精良.创意无限也没用. 耗电或者内存占用等 ...

  4. Android App 性能优化实践

    本文记录了Android App优化需要用到的工具和以及在实践中的Tips.也算对我这半年来部分工作的总结. 工具 Hierarchy Viewer 是 Android SDK 自带的 Layout ...

  5. Android 性能优化的方面方面都在这儿

    又到周六了,鸿洋的不定期的周六放送又来了~~这次来谈谈性能优化吧.大家在工作中或多或少都会拿自家的应用和竞品app做比对,不可避免的需要做一些app性能优化的活.很多时候可能是策略上的调整,不过还是有 ...

  6. 十大技巧优化Android App性能

    无论锤子还是茄子手机的不断冒出,Android系统的手机市场占有率目前来说还是最大的,因此基于Android开发的App数量也是很庞大的. 那么,如何能开发出更高性能的Android App?相信是软 ...

  7. 优化Android App性能?十大技巧必知!

    无论锤子还是茄子手机的不断冒出,Android系统的手机市场占有率目前来说还是最大的,因此基于Android开发的App数量也是很庞大的.那么,如何能开发出更高性能的Android App?相信是软件 ...

  8. Android APP 性能优化的一些思考

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  9. Android app 性能优化的思考--性能卡顿不好的原因在哪?

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

随机推荐

  1. read---读取变量值

    read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开.在read命令后面,如果没有指定变量名,读取的数据将被自 ...

  2. Java反射之getInterfaces()方法

    今天学习Spring3框架,在理解模拟实现Spring Ioc容器的时候遇到了getInterfaces()方法.getInterfaces()方法和Java的反射机制有关.它能够获得这个对象所实现的 ...

  3. 智能指针shared_ptr, auto_ptr, scoped_ptr, weak_ptr总结

    看这里: http://blog.csdn.net/lollipop_jin/article/details/8499530 shared_ptr可以多线程同时读,但是涉及到写,需要加锁. share ...

  4. c++操作当前窗体句柄

    句柄 这一概念是MFC里的一个类.MFC有专门的函数来获取窗体句柄. HWND hwnd; hwnd=CreateWindow("my own windowshandle",&qu ...

  5. 測试CPU支持指令集AVX,AVX2,SSE情况的代码【VS2010调试通过】

    完整代码例如以下所看到的 http://download.csdn.net/detail/vbskj/7723827 本人的測试结果 watermark/2/text/aHR0cDovL2Jsb2cu ...

  6. js11--js与C++、java异同

    function F(){ this.name = "111"; this.say = function(){alert(222);} alert(333); } var f1 = ...

  7. R 语言下常用第三方库的说明

    1. doBy 官方文档见 CRAN - Package doBy doBy 主要适用于以下操作: 1) Facilities for groupwise computations of summar ...

  8. vue ---webpack 打包上线

     先来描述一下期间遇到的问题有哪些: 1.打包后将 dist 文件夹和 index.html 放到 tomcat,在浏览器中访问时,出现空白页,f12 提示 404. 2.打包好的静态资源均是绝对路径 ...

  9. 【2017中国大学生程序设计竞赛 - 网络选拔赛】Palindrome Function

    [链接]http://acm.hdu.edu.cn/showproblem.php?pid=6156 [题意] 已知函数f(x, k),如果10进制数x在k进制下是个回文数,那么f(x, k)值为k, ...

  10. VA对于开发QT是神器,VA自动补全QT

    我怎么就忘了,VA也可以适用于VS下开发QT程序.其中QT的头文件自己增加,主要是: C:\Qt\4.8.6_2008\include 但还有一些特殊类不认识,所以还得继续增加: C:\Qt\4.8. ...