Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
android_performance
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kid Feng
September 15, 2013
Technology
66
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
android_performance
Kid Feng
September 15, 2013
Other Decks in Technology
See All in Technology
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
380
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
170
Optunaの最新リリースv5.0について
pfn
PRO
0
120
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
190
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
Browser Spec: Testing Hotwire with Ruby
takahashim
1
120
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
920
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
490
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
430
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
260
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
How to Talk to Developers About Accessibility
jct
2
580
Optimising Largest Contentful Paint
csswizardry
37
4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building AI with AI
inesmontani
PRO
1
1.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Transcript
Android⾼高性能实践 冯斌 Sunday, September 15, 13
个⼈人、公司介绍 • 冯斌 @KidFeng • 正点闹钟 2011年2月发布 3500W+⽤用户 • 正点科技
专注移动互联⺴⽹网 闹钟、⽇日历、⼯工具箱 Sunday, September 15, 13
内容 • 正点闹钟 for Android研发过程 • Java语⾔言层⾯面的优化 • Android UI渲染层⾯面的优化
• Web App的问题更多 Sunday, September 15, 13
Profiling Tools Sunday, September 15, 13
Traceview • Traceview • Android Profiling⼯工具 • 注意JIT的影响! Sunday, September
15, 13
经典优化点 Sunday, September 15, 13
避免创建 • Java Object • StringBuilder • ArrayList.size() in for
loop Sunday, September 15, 13
避免创建 • java.util.Calendar • IO Resource • Android.view.View Sunday, September
15, 13
• 参考: 《Thinking in Java》 《Effective Java》 Sunday, September 15,
13
Cache • Java Object • Thread pool (AsyncTask) • Bitmap
pool • View pool (ListAdapter) • SoftReference & WeakReference (Android2.3+被积极回收) Sunday, September 15, 13
Bitmap • ⾮非UI线程加载 • OutofMemory ... • Android.util.LruCache Sunday, September
15, 13
View • 占⻚页⾯面启动总⽤用时40 - 70% • 创建和渲染View的代价昂贵 • 创建(45%)渲染(55%) Sunday,
September 15, 13
Layout • 减少Layout (RelativeLayout) • <include/> • <merge/> • ViewStub
Sunday, September 15, 13
Layout • lint (findbugs) • monitor(hierarchyviewer) Sunday, September 15, 13
Layout Demo Sunday, September 15, 13
后台线程 • ⽆无法回避的⾮非UI操作 • 加载图⽚片到内存 • 增加代码复杂度 • 更容易出bug Sunday,
September 15, 13
⺴⽹网络编程 • 使⽤用gzip • 缓存与预取 • 尽量避免使⽤用HTTPS HTTPS握⼿手成功率明显受2G⺴⽹网络影响 Sunday, September
15, 13
UI渲染优化 Sunday, September 15, 13
UI渲染优化 • 从前优化⻚页⾯面加载,代码运⾏行效率 • 4.1开始更多UI渲染优化⽅方案优化 Sunday, September 15, 13
GPU overdraw • 同⼀一区域的绘制次数 • 减少绘制次数以优化渲染速度 Sunday, September 15, 13
GPU overdraw Sunday, September 15, 13
GPU overdraw Sunday, September 15, 13
GPU overdraw • 透明 0X • 蓝⾊色 1X • 绿⾊色
2X • 浅红 3X • 红⾊色 4X Sunday, September 15, 13
GPU overdraw Demo Sunday, September 15, 13
GPU overdraw • 减少层叠 • 9-path空⽩白像数 • android4.1开始对9-path做了优化 Sunday, September
15, 13
Prifile GPU rendering • adb shell dumpsys gfxinfo <pack> Sunday,
September 15, 13
Prifile GPU rendering Sunday, September 15, 13
GPU overdraw • Draw:View.onDraw(Canvas) • Process:2D rendering • Execute:帧刷新 Sunday,
September 15, 13
Animation • Android 3.x ⼤大量API • 性能在4.1得到显著的优化 • Layout Animation
android:animateLayoutChanges="true" Sunday, September 15, 13
Web app Sunday, September 15, 13
原⽣生代码 • 运⾏行速度快 • 更新难 • 动态更新部署⿇麻烦 • 兼容⽅方案更完善 Sunday,
September 15, 13
WEB代码 • 运⾏行速度慢,Dom操作速度慢 • 更新部署容易 • 兼容⽅方案不⻅见得完善... Sunday, September 15,
13
建议 • 现在原⽣生代码是⾸首选 • 原⽣生代码作为APP⾻骨架 (AppStore) • 终端性能提⾼高,未来Web APP Sunday,
September 15, 13
Web实践 • Reflow(回流) Repaints(重绘) • 避免操作Dom树 Sunday, September 15, 13
Web实践 • 只实现最简单的UE效果 • 最精简的需求,jQuery可以不⽤用了 • 以zepto(5K)替换jQuery(92k) • 考虑拦截跳转,本地view实现跳转 •
避免依赖position属性实现布局 Sunday, September 15, 13
Web实践 • 减少请求⽂文件数 • 使⽤用gzip • 合并、压缩优化HTML/CSS/JS代码 Sunday, September 15,
13
Join us • Android⼯工程师 • iOS⼯工程师 ⼯工作地点:北京 or 珠海 Sunday,
September 15, 13