Android省电开发 浅析

http://blog.csdn.net/wtyvhreal/article/details/44589665

 之前有在写Android性能优化的问题,相信对于Android App省电的开发,一切性能优化都可以达到App的省电开发,所以一个省电的Android应用,性能优化占据很重要的位置。除此之外呢,根据个人平时的Android开发积累,LZ整理了几点关于Android应用省电的开发技巧,希望大牛们勿喷,有好的意见可以补充。

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

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

二.Android省电开发之CPU降频

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

      http://blog.csdn.net/matrix_xu/article/details/8509319(这里有篇博文写的很详细,拿来参考)

三.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

时间: 2024-09-12 22:27:59

Android省电开发 浅析的相关文章

Android之AppWidget(桌面小部件)开发浅析

什么是AppWidget AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序,先看图: 图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁的程序,可以做成AppWidget,这样能方便地使用.典型的程序有时钟.天气.音乐播放器等.AppWidget 是Android 系统应用开发层面的一部分,有着特殊用途,使用得当的化,的确会为app 增色不少,它的工作原理是把一个进程的控件嵌入到别外一个进程的窗口里的一种方法.长按桌面空白处,会出现

Android Wear计时器开发_Android

记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间.随着Android Wear的问世,在可穿戴设备中开发一款这样的App确实是个很不错的想法,但是按照目前对于Android Wear的架构了解来说,似乎有些困难.所以本系列文章我们就重写这个应用,带领大家进入Android Wear的世界. 本文不会长篇大论地讲解我们要开发的这款App的用途,因为我们在之前的系列文章已经深入了解过了.这么说吧,这是一个计时类应用,在比赛开始的时候开始执

《精通Android 5 多媒体开发》——第22章,第22.1节屏幕保护程序介绍

22.1 屏幕保护程序介绍精通Android 5 多媒体开发屏幕保护设计的初衷是为了防止电脑因无人操作而使显示器长时间显示同一个画面,导致老化而缩短显示器寿命.另外,虽然屏幕保护并不是专门为省电而设计的,但一般Windows下的屏幕保护程序都比较暗,大幅度降低屏幕亮度,有一定的省电作用.现行显示器分为两种--CRT显示器和LCD显示器,屏幕保护程序对两种显示器有不同影响. 22.1.1 屏幕保护程序的作用屏幕保护主要有如下3个作用. (1)保护显象管. 由于长时间静止的Windows画面会让CR

安卓-android规范的开发流程是怎样

问题描述 android规范的开发流程是怎样 规范的安卓开发流程是怎样的?包括xml文件中id的定义,屏幕的适配等等,希望有经验的大牛给予指导 解决方案 参考:http://mobile.51cto.com/android-290903.htm 解决方案二: http://blog.csdn.net/jason0539/article/details/9823949http://www.cnblogs.com/xiongbo/archive/2011/08/15/2098130.html 解决方

android 应用程序开发中,清除缓存的功能怎么做啊?

问题描述 android 应用程序开发中,清除缓存的功能怎么做啊? android 应用程序开发中,清除缓存的功能怎么做啊?清除此应用程序的缓存,怎么做? 解决方案 getCacheDir()能够得到当前项目的缓存地址 在项目中经常会使用到WebView 控件,当加载html 页面时,会在/data/data/应用package 目录下生成database与cache 两个文件夹.请求的url 记录是保存在WebViewCache.db,而url 的内容是保存在WebViewCache 文件夹下

关于 软件开发工程师 和 Android软件应用开发工程师 以及云计算工程师发展前景

问题描述 关于 软件开发工程师 和 Android软件应用开发工程师 以及云计算工程师发展前景 高级软件开发工程师 和 Android软件应用工程师 以及云计算工程师. 当下这三个方向怎么样,或者说未来一段时间的发展前景.求分析

《Android和PHP开发最佳实践》一2.7 Android应用界面

2.7 Android应用界面 Android应用界面系统,即Android UI(User Interface)系统是Android应用框架最核心的内容之一,也是开发者们需要重点掌握的内容.如果我们把Android应用也分为前后端两部分的话,那么之前介绍的核心要点和四大组件等都属于后端,而Android UI系统则属于前端.后端保证应用的稳定运行,而前端则决定应用的外观和体验.对于一个优秀的Android应用来说,漂亮的外观和流畅的体验是必不可少的.接下来,我们便来学习Android外观系统的

《Android 应用案例开发大全(第3版)》——第1.2节掀起Android的盖头来

1.2 掀起Android的盖头来 自从Android发布以来,越来越多的人关注Android的发展,越来越多的开发人员在Android系统平台上开发应用.那么,是什么使Android备受青睐.在众多移动平台中脱颖而出呢? 1.2.1 选择Android的理由 Android基于Linux技术开发,由操作系统.用户界面和应用程序组成,允许开发人员自由获取.修改源代码,也就是说这是一套具有开源性质的移动终端解决方案,具有开放性.平等性.无界性.方便性以及硬件的丰富性等特点.下面对以上各个优点进行简

Android 浏览器的开发实例分享_Android

 本文主要讲解Android浏览器的开发实例,有三部分内容:启动Android默认浏览器.指定浏览器进行访问以及打开本地的html文件.        一.启动Android默认浏览器 Java代码 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://www.cnblogs.com"); in