Android Performance Patterns

這篇文章是翻譯自這個網站,主要是提醒一些增進Performance的寫法,看不懂的就貼原文囉~

Patterns to avoid bad performance

  1. 不要Block Main Thread
  2. Avoid unnecessary invalidations that may trigger a cascade of invalidations
  3. 不要巢狀地使用有layout_weightLinearLayout,因為會導致onMeasure被呼叫很多次
  4. Custom View不要亂做。編按:改天來分享做Custom View的心得
  5. 不要 new 沒用的 object
  6. 要建立常數,請使用 static final
  7. 盡量使用基本資料型態(Primitives),例如int, float, char, ...
  8. 在class內部,少用setter & getter
  9. 善用 Enhanced loops *詳見下面註解
  10. 善用 Package,取代 Private Inner Classes
  11. 小心使用 Native Mathod(是廢話嗎!?)

關於第9點,因為使用 Enhanced Loop,通常都是使用iterator去跑。根據一些 Android 工程師的說法,反而是建議我們不要使用iterator,用原本的 loop + index還比較省資源且快速

Patterns for Custom views

  1. KISS(Keep it as Simple as Possible, 個人覺得是廢話)
  2. 如果Custom View要inflater layout,該 XML Resource 的 Root Tag 請使用<merge></merge>
  3. 善用include tag
  4. 盡量在onDraw減少 new object過多的運算
  5. 小心使用invalidate(),減少呼叫的個數。可以的話利用invalidate(Rect)限制刷新的範圍(一次刷新整個View是很消耗資源低~)
  6. 不仿考慮建立自己的ViewGroup
  7. 不要再用ListView or GridViewRecyclerView是你的新歡

Patterns to avoid memory churn

  1. 減少 new 沒必較的 object,例如String,或是AutoBoxing導致的Integer, Boolean
  2. 考慮使用Object Pool
  3. 小心使用 emunAndroid 工程師的建議是:不要使用



待續...

results matching ""

    No results matching ""