SlideShare una empresa de Scribd logo
1 de 21
Android应用的『设备体验』优化
无锋
@oasisfeng
何谓『设备体验』
何谓『设备体验』
Android手机为何越用越慢,待机也越来越短?
……而iPhone却不会。
是Android系统太烂了!?
何谓『设备体验』
多任务 —— Android 开放性中最难拿捏的一柄双刃剑
『用户体验』不仅仅取决于当前运行的应用自身
核心:省电、流畅
——国内某知名地图应用
何谓『设备体验』
特点:
• 用户: 难分肇因,一旦揪出元凶就会极度痛恨
• 开发者:浑然不知,稍有一步踏错便会招致骂名
• 社区: 破窗效应,最终毁掉整个Android生态
『设备体验』是如何被腐蚀的
『设备体验』是如何被腐蚀的
卡顿的祸首:(在后台进行……)
• 连续的IO
• 进程创建
• 过量GC
……聚沙成塔
 内存不足
App启动  Broadcast
『设备体验』是如何被腐蚀的
什么样的App会造成设备的整体卡顿?
TOP 1: 静态 Broadcast Receiver (in AndroidManifest.xml)
TOP 2: 后台服务
TOP 3: 以非 WAKEUP 方式使用 AlarmManager
『设备体验』是如何被腐蚀的
耗电的元凶:CPU / 基带
• 非对齐的频繁唤醒
• 周期性的网络请求
• 濒临耗尽的内存
……滴水穿石
私有Push
 持久的后台服务
『设备体验』是如何被腐蚀的
什么样的App在未使用时也会过快的消耗电量?
TOP 1: 基于长连接的自有PUSH机制
TOP 2: 短周期非对齐的使用 AlarmManager
TOP 3: 不合理的使用 WakeLock / WifiLock
保护『设备体验』
保护『设备体验』
除非万不得已,不要静态声明 Broadcast Receiver。
• 大部分静态 Receiver 都可以用动态注册的方式替代
• CONNECTIVITY_CHANGE
• 如需在网络可用时同步数据,考虑 SyncAdapter
保护『设备体验』
倘若情非得已……
• 适时禁用:PackageManager.setComponentEnabledSetting()
• 指定与后续处理相一致的进程:『android:process』
保护『设备体验』
特例:应用自身更新事件
ACTION_PACKAGE_REPLACED
• 所有应用
• Android 1.5+
ACTION_MY_PACKAGE_REPLACED
• 当前应用
• Android 3.1+
https://github.com/oasisfeng/deagle/tree/master/src/com/oasisfeng/android/pattern/update
保护『设备体验』
若非用户同意,切忌启动长期运行的后台服务。
• 如需短时前台任务:AsyncTask
• 如需短时后台服务:IntentService
• 如需长周期定时任务:AlarmManager
• 如需周期性数据同步:SyncAdapter
• 如需PUSH:It's complicated……
保护『设备体验』
珍惜用户的信任,从节约资源做起。
• 与UI分离的独立进程设计:『android:process』
• 内存占用可缩减至3M以内(共用UI进程则往往超过10M)
保护『设备体验』
尽最大可能避免使用私有Push机制。
• 关于Push的设计决策时,将 设备体验代价 考虑在内。
• 是否真的需要实时Push?能否用周期同步替代?
• 优先使用GCM Push,在不可用时降级到私有实现。
• 淘宝客户端的设备统计中,50%以上具备使用GCM的条件。
• 在私有实现中考虑引入启发式的唤醒周期调节
• 在实时性和耗电程度之间进行动态的平衡。
捍卫『设备体验』
I definitely noticed an
overall improvement in
battery life.
LifeHacker.com
Greenify seems to be a
very simple, elegant
solution to a constant
problem on Android.
AndroidPolice.com
捍卫『设备体验』
TOP 10 Greenified Apps
China
1. com.tencent.mm
2. com.UCMobile
3. com.tencent.mobileqq
4. com.wandoujia.phoenix2
5. com.sina.weibo
6. com.baidu.BaiduMap
7. com.qvod.player
8. com.taobao.taobao
9. com.youdao.dict
10. com.eg.android.AlipayGphone
World-wide
1. Facebook
2. Google Maps
3. Titanium Backup
4. Google Play services
5. WeChat
6. YouTube
7. Chrome
8. Dropbox
9. WhatsApp
10. Twitter

Más contenido relacionado

Similar a Android应用的设备体验优化

IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲
IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲
IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲IxDC
 
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班力中 柯
 
手机客户端产品设计的10条法则
手机客户端产品设计的10条法则手机客户端产品设计的10条法则
手机客户端产品设计的10条法则also24
 
手机客户端产品设计的10条法则
手机客户端产品设计的10条法则手机客户端产品设计的10条法则
手机客户端产品设计的10条法则also24
 
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)National Cheng Kung University
 
IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌
IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌
IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌IxDC
 
对《iOS人机交互指南》的一点理解
对《iOS人机交互指南》的一点理解对《iOS人机交互指南》的一点理解
对《iOS人机交互指南》的一点理解isnofate
 
Smartphone forensics手機取證(1090719)
Smartphone forensics手機取證(1090719)Smartphone forensics手機取證(1090719)
Smartphone forensics手機取證(1090719)James Chen
 
如何自動化測試Android Deeplink
如何自動化測試Android Deeplink如何自動化測試Android Deeplink
如何自動化測試Android DeeplinkWu Wells
 
第一次 Mobile App 就上手
第一次 Mobile App 就上手第一次 Mobile App 就上手
第一次 Mobile App 就上手Ying-Hsiang Liao
 
Android event retrospect
Android event retrospectAndroid event retrospect
Android event retrospectrogeryi
 
Android workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phoneAndroid workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phoneJohnny Sung
 
开源改变世界
开源改变世界开源改变世界
开源改变世界kiwiboard
 
App inventor 教學講義 chapter1
App inventor 教學講義 chapter1App inventor 教學講義 chapter1
App inventor 教學講義 chapter1Jerry Wu
 
ARM ® mbed™ 平台之研究及實作
ARM ® mbed™ 平台之研究及實作ARM ® mbed™ 平台之研究及實作
ARM ® mbed™ 平台之研究及實作艾鍗科技
 
學習行動。行動學習
學習行動。行動學習學習行動。行動學習
學習行動。行動學習pj32huang
 

Similar a Android应用的设备体验优化 (20)

IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲
IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲
IxDC 中国交互设计体验日-C1_张立州_手机客户端交互设计三部曲
 
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班第一堂 進入 Android 的世界 --- Jason 的  Android 應用程式快樂學習班
第一堂 進入 Android 的世界 --- Jason 的 Android 應用程式快樂學習班
 
手机客户端产品设计的10条法则
手机客户端产品设计的10条法则手机客户端产品设计的10条法则
手机客户端产品设计的10条法则
 
手机客户端产品设计的10条法则
手机客户端产品设计的10条法则手机客户端产品设计的10条法则
手机客户端产品设计的10条法则
 
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
開放原始碼作為新事業: 台灣本土經驗談 (COSCUP 2011)
 
IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌
IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌
IxDC2011 中国交互设计体验日_移动平台应用差异化设计与统一体验建设_网易_曾智焱_李斌
 
[VideOhya] Titanium開發經驗分享_1020
[VideOhya] Titanium開發經驗分享_1020[VideOhya] Titanium開發經驗分享_1020
[VideOhya] Titanium開發經驗分享_1020
 
0515 UiGathering Talk - Mobile App by Angel Wu
0515 UiGathering Talk - Mobile App by Angel Wu0515 UiGathering Talk - Mobile App by Angel Wu
0515 UiGathering Talk - Mobile App by Angel Wu
 
对《iOS人机交互指南》的一点理解
对《iOS人机交互指南》的一点理解对《iOS人机交互指南》的一点理解
对《iOS人机交互指南》的一点理解
 
Smartphone forensics手機取證(1090719)
Smartphone forensics手機取證(1090719)Smartphone forensics手機取證(1090719)
Smartphone forensics手機取證(1090719)
 
淺談Android app之攻防思維
淺談Android app之攻防思維淺談Android app之攻防思維
淺談Android app之攻防思維
 
如何自動化測試Android Deeplink
如何自動化測試Android Deeplink如何自動化測試Android Deeplink
如何自動化測試Android Deeplink
 
第一次 Mobile App 就上手
第一次 Mobile App 就上手第一次 Mobile App 就上手
第一次 Mobile App 就上手
 
Android event retrospect
Android event retrospectAndroid event retrospect
Android event retrospect
 
Android workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phoneAndroid workshop - 01. Getting started on android phone
Android workshop - 01. Getting started on android phone
 
开源改变世界
开源改变世界开源改变世界
开源改变世界
 
Android ADK
Android ADKAndroid ADK
Android ADK
 
App inventor 教學講義 chapter1
App inventor 教學講義 chapter1App inventor 教學講義 chapter1
App inventor 教學講義 chapter1
 
ARM ® mbed™ 平台之研究及實作
ARM ® mbed™ 平台之研究及實作ARM ® mbed™ 平台之研究及實作
ARM ® mbed™ 平台之研究及實作
 
學習行動。行動學習
學習行動。行動學習學習行動。行動學習
學習行動。行動學習
 

Android应用的设备体验优化