Android Performance Patterns
這篇文章是翻譯自這個網站,主要是提醒一些增進Performance的寫法,看不懂的就貼原文囉~
Patterns to avoid bad performance
- 不要Block Main Thread
- Avoid unnecessary invalidations that may trigger a cascade of invalidations
- 不要巢狀地使用有
layout_weight的LinearLayout,因為會導致onMeasure被呼叫很多次 - Custom View不要亂做。編按:改天來分享做Custom View的心得
- 不要 new 沒用的 object
- 要建立
常數,請使用static final - 盡量使用基本資料型態(Primitives),例如
int,float,char, ... - 在class內部,少用
setter&getter - 善用 Enhanced loops *詳見下面註解
- 善用
Package,取代 Private Inner Classes - 小心使用
Native Mathod(是廢話嗎!?)
關於
第9點,因為使用 Enhanced Loop,通常都是使用iterator去跑。根據一些 Android 工程師的說法,反而是建議我們不要使用iterator,用原本的loop + index還比較省資源且快速
Patterns for Custom views
- KISS(Keep it as Simple as Possible, 個人覺得是廢話)
- 如果Custom View要
inflater layout,該 XML Resource 的 Root Tag 請使用<merge></merge> - 善用
includetag - 盡量在
onDraw減少new object或過多的運算 - 小心使用
invalidate(),減少呼叫的個數。可以的話利用invalidate(Rect)限制刷新的範圍(一次刷新整個View是很消耗資源低~) - 不仿考慮建立自己的ViewGroup
- 不要再用
ListVieworGridView,RecyclerView是你的新歡
Patterns to avoid memory churn
- 減少 new 沒必較的 object,例如
String,或是AutoBoxing導致的Integer, Boolean - 考慮使用
Object Pool - 小心使用
emun。Android 工程師的建議是:不要使用
待續...