Android5.0的主要变化
- 性能提升
- 全面由Dalvik虚拟机转用Android RunTime(ART)虚拟机。
- 支持64位CPU
- NDK开发工具(Intel x86-64 ARM v8 MIPS-64)
- 采用全新的Material Design界面
对用户体验的提升
- 更加省电
- 美观
- 部分应用不能安装、运行
- 占用空间更大
- 更加流畅
- 通知栏体验更加人性化
- 多sim卡支持
- 隐私保护
- 视觉障碍人士易用性
对开发者而言
- 应用安全机制
- 相互唤醒的应用只能安装一个
- 相同自定义权限的应用应该有共同的签名
- ART虚拟机特性
- 加壳、抗反编译导致运行失败
- 垃圾回收机制改进
- MD设计规范
- ui控件的变化
- 动画效果变化
- 增强通信
- 低功耗蓝牙
- nfc增强
- 多网络
- 多媒体的变化
- 新的相机功能(需要硬件支持)
- 媒体控制
- 其他变化
- 电池续航调试
- webView更新
- 最近运行
- jobScheduler 规划任务在合适的时机执行
- 屏幕固定
- 多用户
- PDF渲染
- OpenGL ES3.1
- 工作空间的变化
JIT(Just In Time实时编译) Vs AOT (Ahead of Time预先编译)
- JIT 运行时编译(运行卡顿)
AOT安装时编译(安装过程较长、首次开机时间长、”硬盘”占用大) - 改进的GC
暂停次数从2次变为1次(分析 清理)
暂停时并行处理(多核CPU情况下减少暂停时间) - 改进机制,并发GC更及时,减少了因内存申请造成的GC次数
对不同生命周期的内存对象采取不同的策略,减少了GC的时间
Compacting GC减少后台内存的时候和内存碎片(不连续的内存) - 改进调试(广义)
可简化Traceview(只显示性能影响大的), Debug.startMethodTracingSampling
增强的debug功能(锁、特定类型对象数量、特定对象的断点调试、方法退出断点、field断点)
错误日志更明显
ART运行时GC的优势在于:
ART运行时堆的划分和管理更细致,它分为Image Space、Zygote Space、Allocation Space和Large Object Space四个Space,再加上一个Allocation Stack。其中,Allocation Space和Large Object Space和Dalvik虚拟机的Zygote堆和Active堆作用是一样的,而其余的Space则有特别的作用,例如,Image Space的对象是永远不需要回收的。
ART运行时的每一个Space都有不同的回收策略,ART运行时根据这个特性提供了Mark Sweep、Partial Mark Sweep和Sticky Mark Sweep等三种回收力度不同的垃圾收集器。
其中,Mark Sweep的垃圾回收力度最大,它会同时回收Zygote Space、Allocation Space和Large Object Space的垃圾,
Partial Mark Sweep的垃圾回收力度居中,它只会同时回收Allocation Space和Large Object Space的垃圾,
而Sticky Mark Sweep的垃圾回收力度最小,它只会回收Allocation Stack的垃圾,即上次GC以后分配出来的又不再使用了的对象。- 垃圾收集算法有四种
- 标记-清除算法(mark-sweep)
- 标记-压缩算法(mark-compact)
- 复制算法(copying)
- 引用计数算法(reference counting)
力度越大的垃圾收集器,回收垃圾时需要的时候也就越长。这样我们就可以在应用程序运行的过程中根据不同的情景使用不同的垃圾收集器,那就可以更有效地执行垃圾回收过程。
- 垃圾收集算法有四种
ART运行时充分地利用了设备的CPU多核特性,在并行GC的执行过程中,将每一个并发阶段的工作划分成多个子任务,然后提交给一个线程池执行,这样就可以更高效率地完成整个GC过程,避免长时间对应用程序造成停顿。
ART运行时GC执行流程
定义不同的样式和布局
- 如res/values-v21/ res/layout-v21/
- 使用支持库(AppCompat)
- 被支持的旧控件:EditText、Spinner、CheckBox、RadioButton、SwithCopact、CheckedTextView
- 新的控件:RecyclerView、CardView
- 不能向下兼容的效果(判断运行环境替换效果)
- Activity 切换
- 涟漪效果
- 揭示动画
- 路径动画
- 矢量图
- 矢量图动画
RecyclerView
-
- RecyclerView 负责对象回收
- RecyclerView提供了以下5种角色
- RecyclerView.Adapter
- RecyclerView.ViewHolder
- RecyclerView.LayoutManager 布局器,负责Item视图的布局
- RecyclerView.ItemDecoration 每个item附加的子视图,可用来绘制Divider,设置padding等
- RecyclerView.ItemAnimator 负责添加、删除数据时的动画效果
CardView
android.support.v7.widget.CardView extends FrameLayout
CardView常用属性:
card_view:cardElevation 卡片高度 card_view:cardMaxElevation 卡片的最大高度 card_view:cardBackgroundColor卡片的背景色 card_view:cardCornerRadius卡片的圆角大小 card_view:contentPadding卡片内容于边距的间隔 card_view:contentPaddingBottom card_view:contentPaddingTop card_view:contentPaddingLeft card_view:contentPaddingRight card_view:contentPaddingStart card_view:contentPaddingEnd
card_view:cardUseCompatPadding
设置内边距,V21+的版本和之前的版本仍旧具有一样的计算方式
card_view:cardPreventConrerOverlap
在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠