android省电和提高效率

一.Android省电开发之性能优化

我之前博客有在总结,just a little,http://blog.csdn.net/wtyvhreal/article/details/44172125

二.Android省电开发之CPU降频

众所周知,在android系统的耗电量排行里,cpu的耗电占 了比较大的一部分比例,也就是说,cpu的使用率和使用频率将直接或间接的影响电量的分配和使用,但很遗憾,android-sdk中没有为 android的开发者提供类似cpu管理的功能,但是当下很多省电类应用或专业的cpu管理软件都提供了cpu的降频甚至是超频的功能。

三.Android省电开发之service

Android应用开发中,难免会遇到service开发。android中服务是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面 的东西。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。你可以在服务中开一一个线程,在线程中做耗时动作。

我们从三个方面来浅析一下service的省电开发

1.     查看service是否存活以及降低优先级:

假如一个service工作完成,但是来不及关掉或者kill掉,用户又看不见,所以这个service将会一直在后台运行,势必耗电。所以我们可以降低某些不常用service进程的优先级,在系统内存吃紧的情况下, 进程优先级低的service容易被系统kill掉。除此之外,可以利用监听系统广播来判断service状态是否存活,死亡即可手动kill掉。

2.     用IntentService代替Service开发:

普通服务一旦启动之后,就会一直处于运行状态,必须调用stopService()或者stopSelf()方法才能让服务停止下来。为了简单的创建一个异步的、会自动挺值得服务,Android专门提供了一个IntentService类。IntentService在运行完毕后自动停止,减少耗电量。

3.     后台执行的定时任务Alarm机制:

Service没必要一直在后台运行,这时候的定时任务显得很重要。Android的定时任务有两种实现方式,Timer类和Alarm机制。Timer有一个明显的短板,不适合长期后台运行的定时任务。为了能让电池更加耐用,每种手机都会有自己的休眠策略,Android手机就会在长时间不操作的情况下自动让CPU进入到睡眠状态,这就有可能导致Timer中的定时任务无法正常运行。而Alarm机制则不存在这种情况,它具有唤醒CPU的功能,即可以保证每次需要执行定时任务的时候CPU能正常工作。重点来了:从Android 4.4之后,Alarm任务的触发时间将会变得不准确,有可能会延迟一段时间后任务才能得到执行。这不是bug,而是系统在耗电性方面进行的优化。系统会自动检测目前有多少Alarm任务存在,然后将触发时间将近的几个任务放在一起执行,这就可以大幅度的减少CPU被唤醒的次数,从而有效延长电池的使用时间。

四.Android省电开发之网络

除了常规的异步网络、多线程技术、本地缓存等等之外,Android省电开发还有一个重要的方面是:wifi比蜂窝数据,包括2G(GPRS)、3G更省电:a)尽量在Wi-Fi下传输数据,当然这是废话,不过可以考虑在有Wi-Fi的时候做预加载,比如应用中心的zip包、手Q web类应用的离线资源等;b)非Wi-Fi下,尽量减少网络访问,每一次后台交互都要考虑是否必须。虽然WiFi接入方式已经占到移动互联网用户的50%,但是是有些手机设置为待机关闭WiFi连接,即便有Wi-Fi信号也只能切换到蜂窝数据;

看了一篇博文,上面数据测试,也不知道正确与否,但是能说明一定的问题。灭屏情况:灭屏传输,高负载download的时候WiFi最省电(70mA),3G(270mA)和2G(280mA)相当,是WiFi的4倍左右;亮屏情况:亮屏传输,高负载download的时候WiFi最省电(280mA),3G(360mA)和2G(370mA)相当,是WiFi的1.3倍左右;所以在Android应用省电开发中,我们可以在获取网络方式的方面加以考虑。

五.Android省电开发之Android L5.0(ART)登场

1.      默认的ART运行模式

最新的安卓4.4系统中引入了全新的ART模式吗,相比之前流行已久的Dalvik模式有了很大的改变。因此LZ为大家制作了以下这张ART模式和Dalvik模式区别对比图表,通过对比,可以一眼看出 ART模式和Dalvik模式之间的区别。

这篇博客写的很好http://www.cnblogs.com/shaweng/p/3811461.html

在Dalvik中,应用每次运行,字节码都需要通过即时编译器转换为机器码,这回拖慢应用的运行效率,而在ART环境中,应用在第一次安装时,字节码就会预先编译成机器码,使其成为了真正的本地应用。这个过程叫做预编译。这样的话,应用的启动和执行都会变得更加快速。但是ART的缺点是预编译完的机器人占用了更大的存储空间,应用的安装需要更长的时间。但是牺牲空间时间换取省电速度,在Android应用中还是可以接受的,毕竟性能的提升,运行速度的变快,体验更流畅,电池续航更久显得更重要。

经测试,谷歌最新的Android L系统与上一版本相比续航能力可以提升36%。

Android 5.0的亮点http://lib.91.com/comments/141029/21755059.html

2.      利用JobScheduler API

过去,如果开发人员想通过后台调取服务器数据,或完成某些处理工作,应用程序必须先监听是否有事件正在发生,并为自己设定一个唤醒时间,一旦应用程序开始运行,他需要检查各种环境条件,以确定是否具备条件让它完成工作,还是需要稍后再试,这种方式不仅复杂,而且容易出错,它会不断的浪费资源,比如当 一个应用程序被唤醒后,发现条件不符合就只能去睡觉并为下次唤醒再次设定时间,这是一个反复的过程。

这个问题,将引用JobScheduler来修复,它作为一个调度应用程序,负责当应用程序被唤醒时,提供适当的运行环境,所以开发者不用再让程序检测环境是否符合需求,开发人员只需要按照标准的流程来,调度程序会自动为唤醒的程序,准备好运行环境。应用程序可以使用这个调度程序,来唤醒他们,比如当设备连接到充电器后,调度程序将唤醒那些需要处理器工作的程序,让他们进行工作,或者在设备连接至WiFi网络的时候上传下载照片,更新内容等。该调度程序还支持一个时间窗口,以便它可以唤醒一组应用程序,这将使那些不需要精确唤醒时间,但每隔一两小时需要运行一次的程序能在同一时间点运行,这样就能让处理器保持更长时间的休眠。

JobScheduler的优势相当巨大,它不仅可以帮助手机节省电量, 实际由于不在需要监听,更改和设置报警,还可以帮助开发人员减少代码书写量。目前该JobScheduler类,已经加入Android L开发者预览版。

3.      各种省电新模式和新技术

(1)      全新的Material Design风格用户界面;

新的用户界面更加简洁、色彩更加丰富。动画效果更加合理生动,同时加入实时阴影的3D视图,更多的使用卡片风格的显示效果。全平台风格也变得更为统一。

(2)      新的通知消息系统;

允许用户管理通知中心中的通知消息。原先的Android通知栏几乎是处于无法控制的状态,所有的应用通知都会弹出,要想关闭只能进到每一个应用中去单独设置,或是使用第三方软件来实现统一管理。但是现在不用了,Android 5.0已经自带了通知管理界面。

(3)      多任务界面有着全新的Google Now卡片风格;

通知中心融入更多的卡片式风格,即使是在锁屏状态下也可以进行多种功能操作。同时用户可以自定义通知的优先级别,使得用户不会错过任何重要的通知。还可以设置特定的通知权限,只有被允许的通知消息才会推送。同时还具有操作性,比如用户在游戏时有电话打入,不会以全屏显示,而是弹出可操作的通知卡片,用户可选择接听或拒接,不影响游戏继续进行。

(4)      Project Volta省电模式、BatterySaver省电模式;

Android 5.0的省电模式是通过JobSchedulerAPI以及自动调节屏幕亮度、刷新率来达到省电的效果,而且还使用了Project Volta量化每个应用的耗电量,在手机快没电的情况下主动降低CPU的主频或者关闭通讯模块,以获得更长的待机时间。还配备了一个Battery Bistorian电池历史记录功能,可让详细显示设备的耗电情况。

六.参考引用

http://blog.csdn.net/dyllove98/article/details/43407093

http://blog.csdn.net/matrix_xu/article/details/8509319

http://lib.91.com/comments/141029/21755059.html

http://tech.qq.com/a/20140702/026949.htm

http://news.mydrivers.com/1/310/310617.htm

http://mobile.51cto.com/abased-419415.htm

http://www.pc841.com/shoujizhishi/28594.html

http://mobile.51cto.com/news-417703.htm

Android 功耗(18)---android省电和提高效率相关推荐

  1. android功耗优化,Android功耗测试小工具集锦

    {,](cpGs,uQ0电池时间一直是移动无线设备设计中的关键因素.随着移动设备变得越来越小.越来越轻,使用大电池并不是好的选择.分析电池耗电量可以帮助优化这些设备的电池工作时间.功耗,指的是终端各个 ...

  2. android功耗iphone,android和iPhone比起来哪个更耗电

    您好: 适合自己的 才是最好的,那么 HTC one x 以其一贯的囯际品牌口碑 和 最先智能手|机业|务的领头羊 来说 其今年5月ONE X收到不少的 关注,但是呢 其因为是第一个吃螃蟹的机体 有利 ...

  3. android时间接收器,android – 在飞机模式关闭/打开后,广播接收器在onReceive()中接收的时间太长...

    我创建了一个简单的广播接收器,它工作得很好,除非我打开/关闭空中飞机模式,使用onReceive方法接收广播消息需要将近2分钟.另一件事是,如果我们启动应用程序然后如果我更改Air plane模式(开 ...

  4. Android 功耗优化(3)---Android后台调度与省电

    Android后台调度与省电 I. Handler: 在进程存活的期间有效使用, Google官方推荐使用. 相关机制可以参见: Android Handler Looper机制 简单易用. 稳定高效 ...

  5. Android 功耗(20)---Android后台调度与省电

    Android后台调度与省电 I. Handler: 在进程存活的期间有效使用, Google官方推荐使用. 相关机制可以参见: Android Handler Looper机制 简单易用. 稳定高效 ...

  6. android 功耗(1)---android 功耗分析方法和优化

    android 功耗 高通平台   分类:功耗 1.底电流调试(Rock Bottom Current Optimization) 底电流在手机飞行模式下调试.每个平台的底电流数据可能不一样,具体可以 ...

  7. 【转载】Android功耗改进

    原文地址:<Android功耗改进> by 保罗的酒吧 最近几年中,Google在一直极力的改进Android系统的续航能力.在本文中,我们将看到Andrdoi自5.0到8.0这几个版本中 ...

  8. 转载文章 Android功耗改进

    声明:本文是转载某位大神 附链接:https://www.codercto.com/a/107424.html 最近几年中,Google在一直极力的改进Android系统的续航能力.在本文中,我们将看 ...

  9. 【Android 组件化】为什么能极大提高工程编译速度?

    为什么需要组件化 极大提高工程编译速度 业务模块解耦,有利于多人团队协作开发 什么是组件化 所谓的组件化就是把需求拆成一个一个的小模块,最后组装需要的模块组成一个app 模块化架构 创建一个 Proj ...

最新文章

  1. python postgresql跨数据库查询_Postgresql跨数据库查询
  2. MySQL事物(详解并发问题和隔离级别)(小白也能懂哦)
  3. dhcp工具_网络分析之DHCP服务闯入QinQ二层隧道引发故障
  4. html5游戏制作入门系列教程(八)
  5. 安装Office2007找不到OfficeMUI.msi解决方案
  6. EMC 电磁兼容测试项目
  7. dnf显示与服务器数据异常怎么办啊,DNF:你这该死的数据异常网络中断连接,让我心在痛泪在流...
  8. 苹果x来电闪光灯怎么设置_苹果6splus来电没有声音,苹果6sp听筒没有声音怎么回事...
  9. AN5640摄像头模块在黑金开发板上的使用
  10. django book学习笔记
  11. 不想荒废你的大学生活吧?看看牛人是怎样成为电子学霸的!
  12. 常用邮箱的服务器(SMTP/POP3)地址和端口整理
  13. 项目管理 : 项目管理技术的七大优势
  14. base64编码计算机网络,【MIME协议】base64编码与quoted-printable编码
  15. 瞳孔特征值提取,blink frequency,fixation frequency,saccad extent, pupil diameter等
  16. Erdaicms旅游网站程序微信和手机端分销系统正式上线发布啦
  17. 十条设计原则教你学会如何设计网页布局
  18. 天邑TY1208-Z刷机详细教程(免费 免拆)
  19. Netty入门与实战教程
  20. 解决MySQL出现不允许连接错误,出现有如,ERROR 1130:Host 'localhost' is not allowed to connect to this MySQL server

热门文章

  1. pthread_cancel()与pthread_cancel
  2. Java学习日报—Java并发—2021/11/22
  3. 嵌入式Linux系统编程学习之十四signal信号处理机制
  4. java集合按大小排序_List集合对象中按照不同属性大小排序的实例
  5. [HEOI2013]ALO(待更)
  6. C#设计模式-策略者模式
  7. __set() And __get() 使用详解.
  8. 算法:权重图的最最小生成树算法
  9. C程序中对时间的处理——time库函数详解转
  10. 不使用for完成一段有空格间隔的字符串,分辨长度大于等于4的单词(求各位高人修改,我表示我是菜鸟,这个算法实在太长了)...