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
參考資料
- Android Loader解析
- Android Loader機制全面詳解及源碼淺析
- Android 深入理解Loader機制
- CompositeCursorAdapter——可在ListView中添加多個cursor的Adapter
- Android中CursorAdapter的使用詳解
- 深入源碼解析Android中Loader、AsyncTaskLoader、CursorLoader、LoaderManager
- 支持RecyclerView的CursorAdapter的RecyclerViewCursorAdapter
5. 構建和運行您的應用
6. 硬件渲染HWUI
7. 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?