1. Android o 版本发布规划
- 2017.3.18 Android o dp1(develop preview) 第一版本发布
- 5月到8月会相继发布dp2,dp3,dp4
- q3会发布最终正式版本
-
2.新特性
2.1 UI
2.1.1 Picture in picture(画中画)
早在Android 7.0 中就引入PIP模式,但是只适用于Android TV。它允许用户将播放的视频缩小并显示到所有其他内容上方的浮动窗口,从而让用户在处理其他应用的同时观看视频节目。
需要支持PIP只需要在Mainfest对Activity设置属性:
android:supportsPictureInPicture="true"
进入PIP模式
Activity.enterPictureInPictureMode(PictureInPictureArgs args)
Activity 的纵横比和其他配置设置均由 args 指定。
Tips:当一个Activity进入PIP模式时会调用OnPause(),当某个 Activity 处于 PIP 模式时,它会处于暂停状态,但仍应继续显示内容。因此,您应确保您的应用在 onPause() 处理程序中进行处理时不会暂停播放。相反,您应在 onStop() 中暂停播放视频,并在 onStart() 中继续播放。
2.1.2 AutoFill
用户可以向选择键盘一样选择自动填充应用,通过这个API,自动填充应用可以安全存储地址,名称,密码等数据,在登陆某些账户或者使用信用卡交易的时候将自动填充表单,让交易更轻松。例如在Twitter上登录时可以通过识别指纹自动填充账号密码等。当然用户的账号密码会通过加密在系统保留一份。
2.1.3 支持在XML中定义字体(Font resources in XML)
在o中 设置字体不再需要手动去获取asset下的font文件并生成typeface,系统会自动识别字体文件,并生成一个id。在o中,新引入了R.font的机制,与R.string,R.color处于同一级比,因此,可以在xml中直接通过R.font来设置字体。
2.1.4 针对应用宽色域的颜色(Wide-gamut color for apps)
系统级别增加更多的颜色域支持
2.1.5 WebView中的增强功能(WebView enhancements)
现在在WebView界面下的多应用显示将大幅改进安全性和稳定性。webview现在默认支持多线程,开发者可以在线程中处理不同的加载过程,可以单出开启线程处理webview的崩溃和错误问题。
2.1.6 更多的动画支持
setCurrentPlayTime(long time) //支持动画在time (s)暂停
reverse() //之前一个循环的动画需要写去和回的动画代码。去和回的效果一致时,冗余无用代码,现在只需要写去的代码就可以了.
.....
2.1.7 Auto-Sizing TextView
以前的TextView需要考虑许多有关适配的问题,需要根据分辨率来设置字号。现在TextView可以自动的根据TextView的Height和Width来调整字号的大小。
2.1.8 Media更多的支持
- 引入Metric类,可以更方便的获取Media的各种属性
- 可以自由配置缓存时间,可以设置最长和最短缓存时间
- ......
2.1.9 自适应图标(Adaptive Icons)
Android O 引入了“自适应桌面图标”,能在不同的设备型号上显示不同的图标形状。比如同一个桌面图标在一家 OEM 厂商的设备上显示为圆形,在另一家则可以显示为方形。各个 OEM 厂商可提供一个标准形状,交给系统将所有应用的自适应图标渲染为相同形状。
- 两张图层大小都必须为 108 x 108 dp。
- 图层中心 72 x 72 dp 范围为可视范围。
- 系统会保留四周外的 36dp 范围用于生成有趣的视觉效果(如视差效果和跳动)。
2.1.10 Notification 规范化,减少骚扰
- 将应用发出的通知进行细化,划分成不同的类别,就像电视的一个个频道,可以针对频道进行操作。
- 如:qq可以设置新消息通道,推荐新闻通道等
- 用户可以屏蔽某个频道的通知,而不是这个应用的所有通知消息;开发者可以针对频道设置通知的震动、声音等。当然用户也可以对每一个通道进行性声音,震动等的设置。
- ps:目前通道数目不作限制,且应用可以获取当前应用所有的通道以及通道状态,后果就是存在一种情况,开发者滥用通道,开启n个通道,依旧骚扰用户,google的回答是:用户会直接kill app
2.2 Quality
2.2.1 后台限制
- 当应用进入到后台,没有可见且运行的组件(如后台Service),系统会释放应用所持有的唤醒锁(wakelock)
- 使用 NotificationManager.startServiceInForeground()方法启用foreground Service,旧方法不再有效
- 后台位置获取限制
在Android O系统上,后台运行的应用,不再能频繁的收到位置更新的信息 - 限制在Mainfest中静态注册广播接收器
2.2.2 隐私策略
ISMI获取时需要android.permission.READ_PHONE_STATE权限,并且在N开始获取时会弹出通话权限,会被用户拒绝掉。退一步是获取Android_ID ,但是手机恢复出厂设置后,应该和上一次的不再一致,不可靠。
- ANDROID_ID 不再是设备中所有应用共享的,而是每个应用获取到的都不一样,而且以包名和签名作为区分;卸载后重新安装也不会发生变化;但是手机恢复出厂设置后,应该和上一次的不再一致。google对于设备唯一标示没有做出明确回答
- 获取系统属性net.hostname,将得到null
2.2.3 悬浮窗限制
- 使用新的构造方式,并且悬浮窗展示时,会在通知栏展示一条消息提醒用户当前哪个应用弹出了炫富穿,可以通过通知栏关闭悬浮窗。