美文网首页必会功能点
Android5.0/6.0/7.0/8.0各个版本Api重要变

Android5.0/6.0/7.0/8.0各个版本Api重要变

作者: 牧码人Coder | 来源:发表于2017-08-22 15:02 被阅读929次

    Android5.0(api等级:21)

    1.运行环境的改变

    Android5.0之前运行的环境是dalvik虚拟机,5.0之后运行的环境是ART虚拟机。ART主要包括一下功能:

    预先 (AOT) 编译

    经过改进的垃圾回收 (GC)

    经过改进的调试支持

    大多数 Android 应用应该不用做出任何更改即可直接在 ART 下运行。不过,Dalvik 上运行的部分技术在 ART 上无法运行。

    请注意以下问题:

    您的应用使用 Java 原生接口 (JNI) 运行 C/C++ 代码。

    您使用的开发工具可生成非标准代码(例如某些混淆代码)。

    您使用的技术与垃圾回收压缩不兼容。(虽然 ART 当前没有实施垃圾回收压缩,但在 Android 开放源代码项目中,垃圾回收压缩正处于开发阶段)。

    2.Material Design 设计样式

    RecyclerView/Cordinartlayout/Collingsplayout/Toolbar之类的UI控件的提供,主要是优化AndroidUI界面,形成自己独有的风格。

    通知/声音/震动......提高用户体验

    3.显卡

    支持OpenGL ES3.1 添加了 Java 接口和原生支持。OpenGL ES 3.1 中提供的主要新功能包括:

    对着色器进行计算

    单独的着色器对象

    间接绘图命令

    多样本和模版纹理

    对着色语言的改进

    用于高级混合模式和调试的扩展

    对 OpenGL ES 2.0 和 3.0 的向后兼容性

    4.媒体

    用于高级摄像头功能的摄像头 API

    音频播放

    媒体播放控件

    5.Project Volta

    android 5.0 提供了一个新的JobSchedulerAPI,它允许您通过为系统定义要在以后的某个时间或在指定的条件下(例如,当设备在充电时)异步运行的作业来优化电池寿命。

    节省电量

    Android6.0(api23)

    1.权限管理

    Android权限分类:

    普通权限(Normal permissions)

    危险权限(Dangerous permissions)权限组

    系统和签名权限(signatureOrSystem)

       必须把App放到System/App就有此权限或者用系统签名签名

    签名权限(signature)必须要有系统级别的签名才能够获取到

    2.Doze & App Standby

    Doze 的原理是通过对各种传感器的监控, 来判断机器是否处于使用状态。  当 Doze 认为机器长时间处于待机状态的时候, 它会自动暂停绝大部分后台应用, 同时关闭网络连接, 仅在需要时偶尔连接, 如此来达到在待机时节省电量的效果。

    需要注意的是, 能足以激活 Doze 的待机时长真的很长, 基本上可能你一上午完完全全不碰手机, Doze 才会被激活。  不过这样倒是也为那些晚上不爱插充电器, 也不愿意关机的人们提供了一种节电的新方式。

    另一个功能 App Standby, 指的是系统会自动停用那些许久不用的应用, 从而达到节省电量和减少后台占用的作用。

    3.分屏操作

    4.移除 Apache HTTP 客户端

    Android 6.0 发布版移除了对 Apache HTTP 客户端的支持。如果你的应用程序使用该客户端,并且目标运行版本为 Android 2.3 (API 级别9) 及以上,需要使用 HttpURLConnection 类来代替。这个 API 更加的高效,因为它通过对用户透明的压缩、响应缓存来减少网络开销,并最小化电量消耗。要继续使用 Apache HTTP 的 API,你需要引入org.apache.http.legacy.jar(android{ useLibrary'org.apache.http.legacy'})

    Android7.0(api24)

    1.移除三个隐式广播(网络变化/拍照后的广播/录制视频后的广播)

    Android 7.0 移除了三项隐式广播,以帮助优化内存使用和电量消耗。此项变更很有必要,因为隐式广播会在后台频繁启动已注册侦听这些广播的应用。删除这些广播可以显著提升设备性能和用户体验。

    移动设备会经历频繁的连接变更,例如在 WLAN 和移动数据之间切换时。目前,可以通过在应用清单中注册一个接收器来侦听隐式

    CONNECTIVITY_ACTION

    广播,让应用能够监控这些变更。由于很多应用会注册接收此广播,因此单次网络切换即会导致所有应用被唤醒并同时处理此广播。

    同理,在之前版本的 Android 中,应用可以注册接收来自其他应用(例如相机)的隐式 ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 广播。当用户使用相机应用拍摄照片时,这些应用即会被唤醒以处理广播。

    主要目的还是电池电量的优化

    使用jobScheduler代替

    2.安全

    更安全的加密模式,可以对单独的文件进行加密,android系统启动加密

    3.支持vr

    Android N上对VR的支持,实际上是使用了一个新的跨平台图形计算库——Vulkan,Vlukan API提升处理能力,减少GPU处理,从而获得更佳的游戏体验,所以说,如果一个手机支持VR,那么从某种意义上来说,这个手机的性能应该是很赞的!

    4.引入全新的JIT编译器,使得App安装速度快了75%,编译代码的规模减少了50%

    Android8.0(api26)

    1.所有的隐式广播都被移除了。

    1. 1确定哪些 Broadcast 是隐式(Implict)的

    根据官方文档,所有没有直接和你应用相关的广播都是隐式的。比如文档中举例的ACTION_PACKAGE_REPLACED,会在每个新应用安装时被广播。因此,像ACTION_MY_PACKAGE_REPLACED这样的就是显式广播(explicit Broadcast),因为其只会在你的应用更新时才会进行广播。

    绝大多数我们监听的广播都是隐式的。

    1.2.确定你的应用是否会被影响

    这里列出的是没有被移除的隐式广播,也就是如果你的应用只是监听了这些广播的话,那么恭喜你,你的应用不需要改。

    1.3.如果应用确实监听了这些被移除的隐式广播,JobScheduler来解救你

    JobScheduler 完美适配 Doze 和 App Standby,可以根据定义的条件来执行任务,比如:

    ComponentNamemyService=newComponentName(this,MyService.class);JobInfomyJob=newJobInfo.Builder(myService).setRequiresCharging(true).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).setPersisted(true).build();JobSchedulerjobScheduler=(JobScheduler)getSystemService(Context.JOB_SCHEDULER_SERVICE);jobScheduler.schedule(myJob);

    不过,JobSchedular 只支持 Android API 21 及以上,如果你的应用需要支持以下版本的系统,官方建议可以使用FirebaseJobDispatcher

    这里推荐可以用 Evernote 的Android-Job。其能够根据当前系统,当系统为 Marshmallow 及以上时使用 JobSchedular。当版本没达到时,根据是否集成了 Google Play Service 来使用 GCMNetworkManager 或 AlarmManager。

    1.4.Fonts in XML

    支持自定义字体,在res目录下可以创建font文件夹,文件夹必须为font,文件类型必须是font,然后拷贝进去对应的.ttf/.otf就可以

    Creating a font family

    相关文章

      网友评论

        本文标题:Android5.0/6.0/7.0/8.0各个版本Api重要变

        本文链接:https://www.haomeiwen.com/subject/ugdoqxtx.html