他们都没告诉你适配 Android N 需要注意什么
Android N 这次的新特性包括多窗口的支持、通知栏支持直接回复消息、对部分广播的后台限制、网络数据节省开关等,并不多,也有很多翻译文章已经介绍。
这里主要分享对 Android N 的适配大家可能要注意什么。
文末杂谈带阿里腾讯保障员工买房相关的福利介绍。
还记得 6.0 对 Apache Http 库的废除导致的应用崩溃吗?
还记得 6.0 中 MAC id 始终返回为空导致的唯一 id 混合生成算法大幅失效吗?
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 中不允许调用非公有 APIJNI 中不允许调用非公有 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) 的广播。
(1) GET_ACCOUNTS 权限被废弃
对 targetVersion 设置为 Android N 的 App,GET_ACCOUNTS 权限被废弃。
(2) 增加 ACTION_OPEN_EXTERNAL_DIRECTORY 权限
这个感觉就是对部存储设备写权限的保护,需要用户同意,说不定以后就慢慢废弃 WRITE_EXTERNAL_STORAGE 权限了。
大家知道在 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 上有他们的内推。具体可见:http://j.codekk.com/
相关文章
- 聚焦 Android 11: 大功告成
- Android telephony_android获取真实时间
- android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- Android Studio入门级教程(详细)【小白必看】[通俗易懂]
- android短信验证码代码,Android短信验证码自动填写实现代码
- Android FFmpeg系列09--抽帧与快速抽帧
- android toast显示时间,Android Toast自定义显示时间「建议收藏」
- Android n_android 反编译
- 安卓so文件解密_Android是什么文件
- android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]
- android在eclipse环境下开发需要什么支持_eclipse环境配置教程
- Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.C
- 【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
- 【Android 逆向】整体加固脱壳 ( 脱壳起点 : 整体加固脱壳 | Dalvik 脱壳机制 : 利用 DexClassLoader 加载过程进行脱壳 | 相关源码分析 )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局详解手机开发
- Windows10真的要兼容Android App了 微软到底想玩什么?
- 攻击者宣称可利用 0day 漏洞完全控制 Android 手机
- android使用Messenger绑定Service的多种实现方法
- android拍照和上传的实现代码
- Android招聘面试题解答
- Android实现创建或升级数据库时执行语句