Android N 这次的新特性包括多窗口的支持、通知栏支持直接回复消息、对部分广播的后台限制、网络数据节省开关等,并不多,也有很多翻译文章已经介绍。
这里主要分享对 Android N 的适配大家可能要注意什么。
文末杂谈带阿里腾讯保障员工买房相关的福利介绍。
还记得 6.0 对 Apache Http 库的废除导致的应用崩溃吗?
还记得 6.0 中 MAC id 始终返回为空导致的唯一 id 混合生成算法大幅失效吗?
1. Android 中 Java 的实现向 OpenJDK 8 迁移
Android 是站在 Linux 和 Java 肩膀上快速成长的,在运行时依赖 Oracle JDK,早在 2010 年甲骨文就起诉谷歌侵权 Java。在 N 中 Google 采用 OpenJDK 8 作为 Java 的实现,在 Java 实现上的一些差别可能导致应用出问题。如:
(1) ArrayList 实现中的私有属性 array 被移除
反射使用该属性的需要注意下。
(2) 随机数种子调用可能出错
Crypto 安全提供商在 OpenJDK 中不提供,而它在大家调用 SecureRandom.setSeed() 设置随机种子时会用到,OpenJDK 中需要通过 SecretKeySpec 去直接加载原始密钥或者使用真正的密钥导出函数。
有了解 OpenJDK 8 与 Oracle JDK 更多实现差别的欢迎留言。
PS:
(1) 记得 2014 年 InfoQ 大会上 Oracle 的人介绍 Java 8 的特性,当时还在想 Android 现在依赖 JDK6.0 什么时候才能到 8,现在终于等到了这一天,可惜不是你..
(2) Kotlin 还有机会吗?
2. JNI 中不允许调用非公有 API
JNI 中不允许调用非公有 API,由于命名空间的变化,在 Android N 上运行会崩溃,需要切换到对应公有 API。
3. “老人机的适配”
Android N 允许用户设置显示密度,有点像老人机模式。需要测试 App 在 sw320dp 密度下显示是否正常,及配置变更后应用是否会有异常。
4. 后台优化——三个广播被禁止监听或发送
(1) CONNECTIVITY_CHANGE 广播
对 targetVersion 设置为 Android N 的 App,在后台时不再能接收到 CONNECTIVITY_CHANGE 广播,前台不影响。
(2) ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 广播
所有运行在 Android N 上的 App 不能发送或是接收新增图片(ACTION_NEW_PICTURE)和新增视频(ACTION_NEW_VIDEO) 的广播。
5. 权限改动
(1) GET_ACCOUNTS 权限被废弃
对 targetVersion 设置为 Android N 的 App,GET_ACCOUNTS 权限被废弃。
(2) 增加 ACTION_OPEN_EXTERNAL_DIRECTORY 权限
这个感觉就是对部存储设备写权限的保护,需要用户同意,说不定以后就慢慢废弃 WRITE_EXTERNAL_STORAGE 权限了。
6. 更严格的 Doze 模式
大家知道在 Android 6.0 中,在手机关屏且静止时,Doze 模式通过推迟 CPU 和网络操作延长底池寿命。而 Android N 则在手机关屏时就会一定程度限制 CPU 和网络操作,进入 Doze 模式一段时间后进一步限制 WakeLock、Alarm、GPS 和 Wi-Fi 扫描等,做好迎接休眠状态下更多功能受限导致的 bug 吧,哈哈。
7. 自带 ICU4J 库的子集
更方便 App 的全球化了
杂谈:
(1) 今天下午就有传闻阿里集团(仅上市业务,与某蚁某鸟无关)准备在杭州买地盖楼,房价是市场价的六折,哈哈,刚看了下该文章已经被删除。
不管怎么说,这是个好福利,希望更多优秀人才来杭州。
早在 2011 年腾讯、阿里就相继宣布正式启动“安居计划”和“iHome”计划,为员工提供无息贷款买房。
腾讯三年以上员工在一线城市可免息贷款 50w,除此外城市为 25w,六年内还清。
阿里是两年以上员工可免息贷 20w,三年以上为 30w,双职工可最多贷 40w,五年内还清。
随后京东以及当年中国版 Facebook 都相继出了类似福利。
(2) 有媒体报道菜鸟集团即将完成百亿人民币融资,估值 400 亿人民币。
蚂蚁金服拟融资 31 亿美元,估值或达 500 亿美元,在小米最新估值跌到 280 亿,蚂蚁超过百度跻身 BAT 只是时间的问题,而且不会太久。这么大盘子哪天领跑 BAT 也不是没有可能。
不用羡慕,他们都在招 Android,而且 codeKK 上有他们的内推。