Cheson Blog

探索 专注 勤奋 坚持

Android电源管理之Doze模式专题系列(十一)

省电策略之网络控制

  今天是汶川地震9周年纪念日,早上看手机铺天盖地的新闻报道祭奠的盛况,犹如将一场悲剧的纪念日,不见其悲凉之景,或许只有当年亲历之人能懂其切骨之痛,虽时隔九年,犹能在亲人碑前潸然泪下。然细思其中滋味,痛着尤痛,何必揭开其伤疤,使其黯然。看到一同事朋友圈回忆其在成都的经历,虽无惊心动魄,但也是切实的震区感受。想当年我还在西安上学,也经历过类似的露宿操场的几天,对于未感受过大自然神力的我们来说,...

Android Performance Patterns——Battery Performance

Android Performance Patterns系列学习思考和实践笔记

0. Preface   Google的Android Performance Patterns系列中将电池也归结到了性能的篇章中,通常我在整机项目中知识分类时会将电池这个点划分到功耗底下去,既然这里是按着Google的思路来学习的,那这一章就专门称为电池性能吧,其中涉及到的很多知识点在我的Power主题中已经包含了,届时会给到相关链接和说明。   Android Performance ...

Android电源管理之Doze模式专题系列(九)

状态切换总结

  前面已经把doze模式中各个状态之间的切换过程阐述了一遍,这一篇中就对Doze模式的状态切换做一下总结。   doze模式的初始状态为ACTIVE,当处于灭屏状态下且未充电时,状态将切换到INACTIVE   在INACTIVE状态30分钟之后,Alarm被fire然后切换到IDLE_PENDING状态,做事情   在IDLE_PENDING状态30分钟之后再切换到SENSING,监听...

Android电源管理之Doze模式专题系列(十)

省电策略之屏蔽电源锁

  从这篇开始讲介绍Doze模式的核心作用——降低功耗的策略都是如何实现的。在状态切换剖析之Locating–>IDLE/IDLE_MAINTENANCE–>IDLE这一篇中已经铺段了Doze模式是如何实现降低功耗的目的,这里简单回顾下以做下文的叙述。   进入IDLE模式之后,系统会采取一系列省电策略,包括了禁止网络连接、屏蔽Wakelock、禁止同步工作、不允许Job调度和不...

Android电源管理之Doze模式专题系列(八)

状态切换剖析之IDLE-->IDLE_MAINTENANCE

  此篇为Doze模式中最后一个状态切换。当设备经过重重判断,辛苦等待,千辛万苦终于进入到了IDLE模式,此时系统执行了一系列的低功耗策略,以致很多应用的任务都被挂起。那么这些挂起的任务怎么处理?设备会定时唤醒一次,持续一段时间来处理之前挂起的任务,这个处理时期就是IDLE_MAINTENANCE状态阶段。   IDLE_MAINTENANCE是如何被触发的?在切换到IDLE状态时会通过sc...

Android电源管理之Doze模式专题系列(七)

状态切换剖析之Locating-->IDLE/IDLE_MAINTENANCE-->IDLE

  在状态切换剖析之SENSING–>LOCATION中设备的状态已经进入到了LOCATING,接下来就只差临门一脚设备就能进入一种低功耗状态,也就是IDLE状态,而在IDLE状态下,设备又会定期的进入到IDLE_MAINTENANCE状态来处理之前被pending的任务,然后又进入到IDLE状态,从Locating–>IDLE和IDLE_MAINTENANCE–>IDLE...

Android电源管理之Doze模式专题系列(六)

状态切换剖析之SENSING-->LOCATION

  状态切换剖析之IDLE_PENDING–>SENSING的最后部分提到了从SENSING状态向LOCATION切换的一个入口,这篇将接上文来继续阐述SENSING状态是如何切换到LOCATION的。   在SENSING状态下最后所做的一件事就是启动了MotionDector来监测是否设备是否有位移发生,监测的结果会通过回调函数返回。如果状态是RESULT_STATIONARY...

Android Performance Patterns——Memory Performance

Android Performance Patterns系列学习思考和实践笔记

0. Garbage Collection in Android   Android的内存管理是一个三级Generation的模型,最近分配的对象存放在Young Generation中,在该区域停留达到一定程度之后会被转移到Old Generation中,最后会被存放到Permanent Generation中。   每个级别的区域中都有一定的空间限制,如果分配的对象空间达到阈值时...

Android Performance Patterns——UI Performance

Android Performance Patterns系列学习思考和实践笔记

0. Render Performance   本节重点为介绍用户能感知到的UI绘制时卡顿一类性能问题的直接来源。   Android系统每隔16ms发出VSYNC信号来触发UI绘制的动作,理想情况下,每次VSYNC信号到达时一帧的数据都已经准备好了,这样就能达到60fps的帧率,人眼看起来也就是非常流畅的效果。   但是如果某一帧画面的准备需要24ms,那么在第32ms的V...

一场Android Performance的追根溯源之旅

Android Performance Patterns系列学习思考和实践笔记

前言   本篇写在该系列文章之前,作为本系列的前言以及介绍Android Performance Patterns的原始资料的出处,感谢google developer对此的贡献和胡凯大神对该系列资料的翻译和整理。   本人在Android系统性能优化上摸爬滚打了一年有余,尽得片鳞只爪,尤觉管中窥豹,自愁前路暗淡。偶得暇兴致起,搜罗各大论坛android性能相关资料,遇到了Android...