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?