Android小知識點(三)

1. Java 9新特性

2. ThreadLocal

  • 解決多線程不需要相互依賴的成員變量問題
  • 最常見的ThreadLocal使用場景爲 用來解決 數據庫連接、Session管理等

3. Android 性能優化之String篇

  • 重用的StringBuilder
  • 在拼接動態字符串時,儘量用 StringBuffer(同步) 或 StringBuilder的 append,來減少過多臨時 String 對象
    • 初始合適的長度
  • 慎用String的contact(效率不高),intern方法(過多得使用 intern()將導致 PermGen 過度增長而最後返回 OutOfMemoryError)
  • 關於截取字符串方法的性能比較
    •對於從大文本中截取少量字符串的應用,String.substring()將會導致內存的過度浪費。
    •對於從一般文本中截取一定數量的字符串,截取的字符串長度總和與原始文本長度相差不大,現有的 String.substring()設計恰好可以共享原始文本從而達到節省內存的目的。

4. Loader

  • Loader

    • Android的裝載器(loader)是從Android 3.0新引入的API , 主要完成單線程耗時數據異步裝載功能,並在數據有更新自動通知UI刷新的作用。業內也叫加載器,裝載機。
    • Loader一般用在Activity和fragment異步加載數據,無需重新啓動一個線程來執行數據加載,異步加載可以用asyncTask, 但是loader自帶數據結果監聽機制,可以方便優雅的進行UI更新
    • 由於整個Activity和Fragment主動管理了Loader
    • 當Activity/Fragment處於stopped狀態時,所有的Loader也會被置於stopped狀態
    • Loader在package android.support.v4.content下,實現有下面的兩個:

      這裏寫圖片描述

  • AsyncTaskLoader 默認線程池核心線程5個,而且沒有超時。
    • 同一個ID,最新設置的call back會覆蓋前一個call back
    • 內部LoadTask extends ModernAsyncTask(仿AsyncTask,有其中部分code)
  • CursorAdapter

參考資料

5. 構建和運行您的應用

Android App 構建流程分析

6. 硬件渲染HWUI

RenderThread學習筆記

HWUI(硬件加速繪製UI)簡介

7. MatrixCursor

可定製的Cursor–MatrixCursor

8. ListView複用

  • convertView重用
  • ViewHolder的子View複用
  • 使用RecycleView代替ListView (RecyclerView默認不支持CursorAdapter, 可以使用[三方庫LiGux/ExRecyclerView](https://github.com/LiGux/ExRecyclerView

參考資料

9. swapCursor vs changeCursor

please use swapCursor, it will not close old cursor to avoid crash

swapCursor vs changeCursor, what’s the difference?

10. Android Butterknife 使用方法總結

Butterknife Github

使用總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章