03、同事分享课程的笔记 —《Android应用低功耗设计》

这是安卓组的同事一个月前分享的一节课程,听课时写了一下笔记,之前是写在本子上的,感觉内容挺不错

的,就保存在博客了吧,方便回看。

他曾经在就职于英特尔公司,是与芯片设计相关的,这课程标题虽然是与安卓相关的,但对于 windows 移动开发

应该有借鉴意义。芯片相关的专业术语不懂,不过关于应用性能消耗的建议还不错,大多是常见的:

1)屏幕亮度和耗电关系较大

2)节省用户不关心的电。例如,如果用户在充电时,可以把下载等密集的任务可劲的执行,因为此时消耗的电量会很快补充上

3)定位模块耗电较多。手机在无信号时,会频繁的寻找信号,此时消耗电量较多

4)漏电功耗(芯片额外的消耗,比如芯片上的 0、1电位,导体中的电流):芯片漏电,温度越高,漏电越多(指数关系)

5)功耗的测量:1>专业的工具  2> android系统的 api(猜测 win rt系统的电量统计会提供给第三方 app调用)

6)LazyFirst,不要过于勤快的做各种操作(我理解的是延迟加载,只做必要的网络请求和操作)

7)尽量加快文件下载,增加下载速度,减少下载时间(猜测是网络请求和文件读写是耗电主因,所以下载时间越短,电量消耗越少)

8)服务器端传递的文本内容最好进行压缩(如 GZIP 压缩。可以通过设置“请求报文头”来通知服务器进行压缩)

9)不紧急的工作和操作,积累到一起同时做(比如 把多次的 uri 请求 合并成一个 uri 请求),或者在用户充电时,在后台完成

10)按需动态加载,卸载(例如,在 wp 端 sdk 提供的 ListBox 通过 VirtualStackPanel 来动态加载 item,原理是判断当前 item 是否在屏幕内,

来动态创建和删除,如果用户连续上、下划动,对cpu 计算量较多)

11)小心 weaklook (我理解的是 wp 端的app,如果在用户不和屏幕进行交互时,避免调用屏幕“常亮”的api,或者阻止操作系统睡眠)

12)建议少用浮点运算,尽量改为整数运算,从而减少 cpu 消耗

13)减少复杂结构反复的生成和销毁

14)使用高效的文本格式(json、xml等)解析器

15)使用缓存,减少内存(我理解的是不频繁访问的数据缓存到本地文件中,而不是保持在内存中,需要时再加载)

16)使用 CPU 及其它芯片上的加速器

17)优化核心算法的复杂度

18)耗电大户:网络下载、屏幕亮度、cpu运算(还有内存占用)

19)合并必要的上传、下载请求

20)在定位时,尽量使用网络(wifi)、其次是基站定位,最后在考虑使用 GPS 定位

21)动态调整屏幕亮度。深色主题更节省电能

时间: 2024-08-11 07:38:35

03、同事分享课程的笔记 —《Android应用低功耗设计》的相关文章

KVM虚拟化实践-老男孩架构师课程教案笔记分享

KVM虚拟化实践-老男孩教育高级架构师课程教案笔记分享 http://blog.oldboyedu.com/kvm/ 老男孩教育高级架构师课程视频加文档 http://blog.oldboyedu.com/supporting-video/

android学习笔记--android启动过程之init.rc文件浅析

1.  init.rc文件结构文件位置:init.c  : /system/core/initinit.rc  : /system/core/rootdir 首先init.rc文件是以模块为单位的,每个模块里的内容都是一起执行的,模块分为3种类型:on.service.import.我们可以看下init.rc文件是怎么写的:1.import import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc 上面的内容

[笔记]Android开发环境配置及HelloWorld程序

Android的开发需要以下四个工具: 1.JDK 2.Eclipse 3.Android SDK 4.ADT 具体功能: 1.JDK.JDK即Java Development Kit(Java开发工具包),包括JAVA运行环境,基础类库和JAVA工具,是JAVA运行的基础. 2.Eclipse.Eclipse是开发JAVA程序的软件工具. 3.Android SDK.SDK即Software Development Kit(软件开发工具包).AndroidSDK指的是Android专属的软件开

Android笔记——Android中数据的存储方式(二)

我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效率.如果学过JavaWeb的朋友,首先可能想到的是数据库.当然了数据库是一个方案,那么是否还有其他的解决方案呢?今天我们在讲下Android笔记——Android中数据的存储方式(一) 提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件.SQL

【微信转发,学院送礼】动动手指,分享课程,轻松领大奖~

动动手指,分享课程,轻松领大奖~ 做分享达人,赢取金币 活动时间: 10月12日-19日 活动内容: 分享学院课程到微信朋友圈,截图到论坛帖子回帖即可获得5金币奖励! 论坛帖子地址戳┏ (゜ω゜)->:http://bbs.51cto.com/thread-1168042-1.html 随机抽取10位幸运用户还可以获得大奖哟! 第1-2名:获得大型号无忧熊+100京东购物卡 第3-5名:获得中型号无忧熊+80学院金币 第6-10名:获得小型号无忧熊+50学院金币 奖品展示: 如何分享呢?看这里:

王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V3之Android架构设计和实现完整训练:HAL&Framework&Native Service&Android Service&Best Practice

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,  HAL是Android Framework&Application与底层硬件整合的关键技术和必修技术:

Mina框架的学习笔记——Android客户端的实现

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中.目前正在使用 MINA 的软件包括有:Apache Directory Project.Asyn

转载:android笔记--android中的多线程--Handler, Looper, MessageQueue, Message类

什么时候使用多线程: 1. 耗时操作使用多线程, 耗时操作放在UI线程中会导致用户的操作无法得到响应. 2. 阻塞操作使用多线程, 理由同上. 3. 多核CUP的设备使用多线程, 可以有效提高CPU的利用率. 4. 并行操作使用多线程. android中的多线程模型主要涉及的类有:Looper, Handler, MessageQueue, Message等. 一:Looper类: 1 static final ThreadLocal<Looper> sThreadLocal = new Th

Android 开发笔记 “Android 的消息队列模型”

Android是参考Windows的消息循环机制来实现Android自身的消息循环的. Android通过Looper.Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环). Android系统中,Looper负责管理线程的消息队列和消息循环.我们可以通过Loop.myLooper()得到当前线程的Looper对象,通过Loop.getMainLooper()可以获得当前进程的主线程的Looper对象. 一个线程可以存在(当然也可以不存