导图社区 Android学习计划
Android学习计划,整理了android、Java、多线程的内容,非常全面的安卓学习计划希望对你有帮助。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
知识总结
android
framework
Zygote
JNI
加载方式
定义使用
组件管理AMS
Activity
Service
Broadcast
provider
进程管理
task管理
任务栈(stack)管理
窗口WMS
绘制流程
动画
包PMS
事件InputManagerService
handler
进程间通信
unix socket
binder
共享内存
应用
开发模型
MVC
MVVM
组件通信
EventBus
ARouter
解耦
组件化bundle
开源框架
网络
Volley
okhttp
缓存机制
加密
异步
rxjava
图片加载
Glide
UI
自定义View
性能优化
databinding原理
软资源
CPU
内存
io
应用管控
自启
伪前台
查杀
优化框架
工具
面试问题
子线程中维护的looper,消息队列无消息时的节省性能的处理方案
handler中loop方法为什么不会导致线程卡死?
UI卡顿常见的原因及解决方案?
ListView和RecyclerView的区别
RecyclerView自带ViewHolder,ListView需要自己写 RecyclerView可以使用LayoutManager切换不同的样式,ListView没有 RecyclerView可以使用ItemAnimator自定义切换动画,Listview没有 RecyclerView通过实现NestedScrollingChild来实现滚动嵌套 ListView自带OnItemClickListener ,可以方便的响应点击事件,RecyclerView没有 ListView有HeaderView 与 FooterView,RecyclerView没有
ListView的优化
复用convertView 缓存item条目的引用,减少findViewbyId—>ViewHolder 数据的 分页/分批 加载:对大量的数据进行分页展示,对不同的滚动状态进行分别处理,在快速滑动状态不加载数据 图片的缓存,需要解决图片错位问题—>推荐使用成熟框架Glide或Picasso 根据列表的滑动状态来控制任务的执行频率(在快速滑动时不要加载图片) 可以开启硬件加速使ListView更加流畅(android:hardwareAccelerated="true") 将ListView的scrollingCache和animateCache这两个属性设置为false(默认是true); 避免GC(可以从LOGCAT查看有无GC的LOG); 尽可能减少List Item的Layout层次(如可以使用RelativeLayout替换LinearLayout, 或使用自定的View代替组合嵌套使用的Layout)
内存泄漏
静态变量 线程持有activity对象导致activity无法释放回收 匿名内部类生命周期比外部类长,导致外部类无法释放 context使用不当,某些生命周期很长的变量持有activity的context,导致activity无法被释放 handler使用不当,等待执行的消息太多的时候,由于消息持有handler,handler持有activity,导致activity无法被释放 注册监听器泄露,没有在onDestory中释放监听器导致监听器长期持有activity,而导致activity无法被释放 Curser、stream没有及时close 集合对象没有及时清理 adapter没有使用convertView Bitmap对象不在使用时调用recycle()释放内存
内存抖动
因为在短时间内大量的对象被创建又马上被释放
循环体创建对象
onDraw等频繁调用的方法里创建对象等
Java
JVM
GC硬核十八问
面试官老问:GC如何调优
简单说下G1回收流程
简单说下cms回收流程
什么是logging write barrier
为什么有些新老年代的收集器不能组合使用,比如ParNew和ParallelOld
为什么G1不维护年轻代到老年代的记忆集?
GC调优的两大目标是啥?
young gc、old gc、full gc、mixed gc傻傻分不清?
cms写屏障又是维护卡表,又得维护增量更新?
cms和G1为了维护并发的正确性分别用了什么手段?
新生代的GC如何避免全堆扫描?
那cms的记忆集和G1的记忆集有什么不一样?
cms gc发生concurrent mode failure时的full gc为什么是单线程的?
产生concurrent mode failure的真正原因
那PLAB知道吗?
知道TLAB吗?来说说看
full gc触发条件有哪些?
young gc的触发条件是什么?
内存模型
GC算法
类加载
双亲委托
ART的类加载流程
热修复
tinker
SystemClassLoaderAdder.java
语言特性
lambada
ArrayList的使用,使用过程中有没有遇到坑
HashMap
aba问题
泛型的边际
StringBuilder StringBuffer区别
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
三者在执行速度方面的比较:StringBuilder > StringBuffer > String
HashMap和Hashtable的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现)
他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key)
由于非线程安全,效率上可能高于Hashtable
多线程
可重入锁
读写锁
AQS
CAS
算法与数据结构
架构与设计模式