Android 7.0新特性总结

2023-11-05

2016年8月22日,谷歌正式推送Android 7.0 Nougat(牛轧糖)正式版,他们还会三个月一次推送开发版,而曝光的消息看,第一个开发版就是Android 7.1,Android N主要新增了以下的新特性和优化。


新的Notification

Android N 增加了许多新的notifications API,进行了重新的设计,引入了新的风格。

 模板更新:开发者将能够充分利用新模板,只需进行少量的代码调整。


● 消息样式自定义:可以自定义更多与使用MessageStyle类的通知相关的用户界面标签。可以配置消息、会话标题和内容视图。


● 捆绑通知:系统可以将消息组合在一起(例如,按消息主题)并显示组。用户可以适当地进行 Dismiss 或 Archive 等操作。


 直接回复:对于实时通信应用,Android 系统支持内联回复,以便用户可以直接在通知界面中快速回复短信。


● 自定义视图:两个新的 API ,在通知中使用自定义视图时可以充分利用系统装饰元素,如通知标题和操作。



多窗口支持(分屏模式)

运行 Android N 的手机和平板电脑上,用户可以并排运行两个应用,或者处于分屏模式时一个应用位于另一个应用之上。用户可以通过拖动两个应用之间的分隔线来调整应用。在Android TV 设备上,应用可以将自身置于画中画模式,从而让它们可以在用户浏览或与其他应用交互时继续显示内容。



Quick Settings Tile API

“快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。在 Android N中,已扩展“快速设置”的范围,使其更加有用更方便。为额外的“快速设置”图块添加了更多空间,用户可以通过向左或向右滑动跨分页的显示区域访问它们。 还让用户可以控制显示哪些“快速设置”图块以及显示的位置 — 用户可以通过拖放图块来添加或移动图块。


对于开发者,Android N 还添加了一个新的 API,从而可以定义自己的“快速设置”图块,使用户可以轻松访问应用中的关键控件和操作。



快速的应用安装路径

Android 运行组件的 JIT 编译器最实际的好处之一是应用安装和系统更新的速度。即使在Android 6.0 中需要几分钟进行优化和安装的大型应用,现在只需几秒钟就可以完成安装。系统更新也变得更快,因为省去了优化步骤。


随时随地低电耗模式

在 Android N 中,低电耗模式又前进了一步,随时随地可以省电。只要屏幕关闭了一段时间,且设备未插入电源,低电耗模式就会对应用使用熟悉的 CPU 和网络限制。这意味着用户即使将设备放入口袋里也可以省电。


Project Svelte:后台优化

Project Svelte在持续改善,以最大程度减少生态系统中一系列 Android 设备中系统和应用使用的 RAM。在 Android N 中,Project Svelte 注重优化在后台中运行应用的方式。


后台处理是大多数应用的一个重要部分。处理得当,可实现非常棒的用户体验—即时、快速和情境感知。如果处理不得当,后台处理会毫无必要地消耗 RAM和电池,同时影响其他应用的系统性能。

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


移动设备会经历频繁的连接变更,例如在 Wi-Fi 和移动数据之间切换时。目前,可以通过在应用清单文件中注册一个接收器来侦听隐式 CONNECTIVITY_ACTION广播,让应用能够监控这些变更。由于很多应用会注册接收此广播,因此单次网络切换即会导致所有应用被唤醒并同时处理此广播。同理,应用可以注册接收来自其他应用(例如相机)的隐式ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO 广播。当用户使用相机应用拍摄照片时,这些应用即会被唤醒处理广播。


为减缓这些问题,Android N应用了以下优化措施:

1、面向 Android N 开发的应用不会收到  CONNECTIVITY_ACTION 广播,即使它们已有清单条目来请求接受这些事件的通知。在前台运行的应用如果使用BroadcastReceiver请求接收通知,则仍可以在主线程中侦听CONNECTIVITY_CHANGE。


2、 应用无法发送或接收 ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO广播。此项优化会影响所有应用,而不仅仅是面向 Android N 的应用。


未来的 Android 版本还可能会弃用其他隐式广播以及未绑定的后台服务。有鉴于此,应避免依赖在清单文件中声明的接收器来侦听隐式广播或删除此依赖关系,以及避免或删除对后台服务的依赖关系。


Android 框架提供多种解决方案来降低这些隐式广播或后台服务的必要性。例如,JobScheduler API 提供了一个稳健可靠的机制来安排满足指定条件(例如连入不按流量计费的网络)时所执行的网络操作。甚至可以使用JobScheduler来响应内容提供程序所发生的变更。


Data Saver

在移动设备的整个生命周期,蜂窝数据计划的成本通常会超出设备本身的成本。对于许多用户而言,蜂窝数据是他们想要节省的昂贵资源。


Android N推出了Data Saver模式,这是一项新的系统服务,有助于减少应用使用的蜂窝数据,无论是在漫游,账单周期即将结束,还是使用少量的预付费数据包。 Data Saver让用户可以控制应用使用蜂窝数据的方式,同时让开发者打开Data Saver时可以提供更多有效的服务。



Vulkan API

Android N 将一项新的 3D 渲染 API Vulkan™ 集成到平台中。就像 OpenGL™ ES 一样,Vulkan是 3D 图形和渲染的一项开放标准,由Khronos Group 维护。


Vulkan是完全从零开始设计,以最小化驱动器中的 CPU 开销,并能让应用更直接地控制 GPU 操作。Vulkan还允许多个线程同时执行工作,如命令缓冲区构建,以获得更好的并行化。


Vulkan开发工具和库都已卷入Android NDK。它们包括:

● 头

● 验证层(调试库)

● SPIR-V 着色程序编译器

● SPIR-V 运行时着色器编译库

● Vulkan仅适用于已启用Vulkan硬件的设备上的应用,如 Nexus 5X、Nexus 6P 和Nexus Player。


号码屏蔽

Android N 现在支持在平台中进行号码屏蔽,提供框架 API,让服务提供商可以维护屏蔽的号码列表。默认短信应用、默认手机应用和提供商应用可以对屏蔽的号码列表进行读取和写入操作,其他应用则无法访问此列表。


来电过滤

Android N 允许默认的手机应用过滤来电。手机应用执行此操作的方式是实现新的CallScreeningService,该方法允许手机应用基于来电的Call.Details执行大量操作,例如:

● 拒绝来电

● 不允许来电到达通话记录

● 不向用户显示来电通知


十一

多区域设置支持、多语言

Android N 现在允许用户在设置中选择多个区域设置,以更好地支持双语用例。应用可以使用新的 API 获取用户选择的区域设置,然后为多区域设置用户提供更成熟的用户体验,如以多个语言显示搜索结果,并且不会以用户了解的语言翻译网页。


除多区域设置支持外,Android N 还扩展了用户可用的语言范围。它针对常用语言提供超过 25种的变体,如英语、西班牙语、法语和阿拉伯语。它还针对 100 多种新语言添加了部分支持。


应用可以通过调用 LocaleList.GetDefault() 获取用户设置的区域设置列表。 为支持扩展的区域设置数量,Android N 正在改变其解析资源的方式。 


十二

新增的表情符号

Android N引入更多表情符号和表情符号相关功能,包括肤色表情符号和支持变量选择符。如果应用支持表情符号,请遵循以下准则,以便能充分利用这些表情符号相关功能优势。


● 在插入之前,检查设备是否包含表情符号。若要检查系统字体中有哪些表情符号,使用hasGlyph(String) 方法。


● 检查表情符号是否支持变量选择符。变量选择符能够呈现一些彩色或黑白的表情符号。在移动设备上,应用应呈现彩色的表情符号,而不是黑白的。但是,如果应用显示嵌入在文本中的表情符号,那应使用黑白变量。若要确定表情符号是否有变量,使用变量选择符。如需有关支持变量的字符的完整清单,请参阅变量的 Unicode 文档中的表情符号变量序列部分。


● 检查表情符号是否支持肤色。Android N允许用户按照他们的喜好修改表情符号呈现的肤色。键盘应用应为有多个肤色的表情符号提供可视化的指示,并应允许用户选择他们喜欢的肤色。若要确定哪些系统表情符号有肤色修改器,使用hasGlyph(String) 方法。可以通过读取Unicode 文档来确定哪些表情符号使用肤色。


十三

Android 中的 ICU4J API

ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。Android N 在android.icu软件包下显示 Android 框架中的 ICU4J API 子集,供应用开发者使用。迁移很简单,主要是需要从com.java.icu命名空间更改为android.icu。如果已在应用中使用 ICU4J 捆绑包,切换到 Android 框架中提供的android.icu API 可以大量节省 APK 大小。


十四

OpenGL™ ES 3.2 API

Android N 添加了框架接口和对 OpenGL ES 3.2 的平台支持,包括:

● 来自 Android 扩展包 (AEP) 的所有扩展(EXT_texture_sRGB_decode除外)。

● 针对 HDR 的浮点帧缓冲和延迟着色。

●  BaseVertex绘图调用可实现更好的批处理和流媒体服务。

● 强大的缓冲区访问控制可减少WebGL开销。


十五

VR 支持

(面向Android的 Google VR SDK)


Android N 添加了新的VR 模式的平台支持和优化,以使开发者能为用户打造高质量移动 VR体验。新版针对开发者提供了大量性能增强特性,包括单一缓冲区渲染以及允许 VR 应用访问某个专属的CPU 核心。在应用中,可以享受到专为 VR 设计的平滑头部跟踪和立体声通知功能。


十六

无障碍增强功能

(API参考 android.accessibilityservice.GestureDescription)

Android N 现在针对新的设备设置直接在欢迎屏幕上提供“Vision Settings”。这使用户可以更容易发现和配置他们设备上的无障碍功能,包括放大手势、字体大小、显示屏尺寸和TalkBack。


十七

密钥认证

使用硬件支持的密钥库,可更安全地在 Android 设备上创建、存储和使用加密密钥。它们可保护密钥免受 Linux 内核、潜在的 Android 漏洞的攻击,也可防止从已取得根权限的设备提取密钥。


为了让硬件支持的密钥库使用起来更简单和更安全,Android N 引入了密钥认证。应用和关闭的设备可使用密钥认证以坚决地确定 RSA 或 EC 密钥对是否受硬件支持、密钥对的属性如何,以及其使用和有效性有何限制。


应用和关闭的设备服务可以通过 X.509 认证证书(必须由有效的认证密钥签署)请求有关密钥对的信息。认证密钥是一个 ECDSA 签署密钥,其在出厂时被注入设备的硬件支持的密钥库。因此,有效的认证密钥签署的认证证书可确认硬件支持的密钥库是否存在,以及该密钥库中密钥对的详细信息。


为确保设备使用安全的官方 Android 出厂映像,密钥认证要求设备 bootloader向可信执行环境(TEE)提供以下信息:

设备上安装的操作系统版本和补丁级别

● 验证的启动公钥和锁定状态。

● 除密钥认证外,Android N 还推出了指纹绑定密钥,在指纹注册时不会撤销。


另外新增特性还有直接启动、打印服务增强、持续性能 API、作用域目录访问、键盘快捷键辅助工具等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 7.0新特性总结 的相关文章

  • java.lang.IllegalArgumentException:此组件要求您指定有效的 android:textAppearance 属性

    我的布局文件之一中有一个 com google android material button MaterialButton 组件 当我使用最新版本的 Material Components 库 com google android mat
  • 如何自定义菜单项的背景颜色?

    我正在尝试定制Toolbar的弹出菜单 现在我无法设置菜单项的背景颜色 我的 styles xml 如下所示
  • Android短音的正确播放方法?

    我正在创建一个应用程序 屏幕上将有多个图像 这些图像将是按钮 点击时会播放短促的声音 我对此进行了研究 只能找到我当前用来播放声音的方法 这似乎根本没有响应 我希望声音能够快速播放并且能够响应多次快速点击 我不确定这在 Android 中是
  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • 如何在 Linux 内核中定义并触发我自己的新软中断?

    我想在 Linux 内核中创建自己的软中断 这是正确的方法吗 In the init我想触发该模块的softirq我将添加一个调用 394 void open softirq int nr void action struct softir
  • 如何使用 Google Maps for Android V2 处理地图移动结束?

    我想在地图中心更改后立即对地址进行地理编码 如何使用新的 Android 版 Google 地图 V2 处理地图移动 我说的是用户用手指拖动地图的情况 查看新的地图 API Override public void onMapReady G
  • 将现有 VARCHAR 列与 Room 结合使用

    我正在尝试将现有的数据库与 Android Room 一起使用 但是 我的一个表有一个 VARCHAR 列 Room 似乎只支持 TEXT 不支持 VARCHAR 而且 sqlite 不允许修改列类型 那么 有没有办法使用Room中现有的带
  • Android应用程序组件销毁和重新创建的详细信息

    有人可以向我提供一些具体的 值得信赖的 最好是简洁的 信息 内容如下 系统销毁和 如果适用 重新创建组件的顺序 片段 活动 活动的线程 异步任务 计时器 静态数据 类何时卸载 其他类中的线程 异步任务 定时器 主机 TabActivity
  • 如何在我现有的 Android 应用程序中使用 Telegram API(包括聊天应用程序)?

    我想使用 telegram API 在我现有的 Android 应用程序中开发聊天功能 我不知道如何实施 我认为 看看Telegram 数据库库 测试版 从这里TDLib https core telegram org tdlib 俄语 但
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • Android Studio 与本地网络共享上的项目文件

    这是我的设置 Android Studio 项目文件位于 Ubuntu 14 10 盒子上的共享文件夹中 尝试在 Windows 8 机器上运行 Android Studio 1 0 2 并将 U 驱动器映射到包含项目文件的 Ubuntu
  • 从 BroadcastReceiver 类调用活动方法

    我知道我可以做一个内部接收器类来调用接收器中的任何方法 但我的主要活动太大了 要做的事情也很多 因此 我需要一个扩展广播接收器的类 但它不是内部类 并且可以从我的主要活动中调用一种方法 我不知道是否可能 但我的活动是家庭活动和 single
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 您使用什么物理 Android 设备进行测试?

    有什么好的推荐用于测试目的的物理 Android 设备吗 我正在苹果阵营寻找像 iPod touch 这样的设备 可以帮助 iOS 开发人员测试他们的东西 我知道有 Nexus One 但那东西相当昂贵 而且我并不真正关心手机的东西 而是可
  • 如何检查 Android 中的同步设置

    我正在构建一个 Android 应用程序 我需要检查设备中注册的每个单独帐户的同步设置 我知道我可以通过 ContentResolver 类来做到这一点 但我遇到了一些问题 我已设法获取设备上所有帐户的列表 但我不知道在运行时从哪里获取特定
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 有没有任何代码可以在android中设置壁纸而无需裁剪和缩放?

    我正在创建一个画廊应用程序 我的第一个应用程序 这是我的代码 Bitmap bmd BitmapFactory decodeStream is try getApplicationContext setWallpaper bmd catch

随机推荐

  • 区块链四级知识考试

    区块链知识四级考试 考试时间30分钟 总分100分 请认真作答 出题人及监考老师 高志豪 请转载者注明 谢谢支持 一 单选题 每题5分 共40分 1 加密数字货币如果设置过短的确认时间会更容易导致什么出现 A 高效率 B 低效率 C 孤块
  • C/C++:C/C++在大数据时代的应用,以及C/C++程序员未来的发展路线

    目录 1 C C 在大数据时代的应用 1 1 C C 数据处理 1 2 C C 数据库 1 3 C C 图像处理和计算机视觉 1 3 1 导读 2 C C 程序员未来的发展路线 2 1 图导 1 C C 在大数据时代的应用 C C 在大数据
  • 三. go 常见数据结构实现原理之 silce

    目录 一 基础 几个小问题 1 题目一 2 题目二 3 题目三 4 数组和切片陷阱 二 Slice实现原理 切片的创建与底层结构 append 与切片的扩容 切片的值传递引用传递 切片再切片 特殊切片 切片的 Copy 总结 一 基础 为什
  • Path的Data生成归总

    Path的Data数据有三种生成方式 1 最简单的是用Expression Design 可以粘贴来自其它软件的矢量图形 导出时选择 文件 gt 导出 gt 导出属性 gt 格式 gt XAML Silverlight 画布 即可得到XAM
  • ES6中var let const三种变量(一文弄清楚)

    ES6中三种变量声明 ECMAScript 变量是松散类型的 变量可以用于保存任何类型的数据 有3个关键字可以声明变量 var const 和 let 其中 var在ECMAScript 的所有版本中都可以使用 而 const 和 let
  • 判断密码是否包含键盘连续字母

    新增内容为增加键盘列排序检测 原理 用两个与传入密码长度相等的一维数组 Row行数组 Column列数组 按密码顺序在二维键盘数组中查找每个字符 找到了则用 一维行列数组分别存放密码中每个字符的行号和列号 然后循环分析行号和列号是否满足二维
  • Alist V3 “全新版本“ 使用 安装/启动 教程!

    Introduction AList文档 nn ci 如果安装了Docker 请确保将其添加到系统的PATH变量中 您可以通过在终端中运行命令echo PATH来检查这一点 输出应该包括码头工人二进制文件的路径 通常是 usr bin 码头
  • RuntimeError: Pin memory thread exited unexpectedly 或 OSError: [Errno 9] Bad file descriptor 的解决方法

    遇到这几个错 大多是因为内存不足 我的解决方法 方案一 pin memory 不变 pin memory的值仍然为True 不需要改为False 而是把batch size 和 num worker的值分别调成 batch size 2 n
  • 10-20-010-简介-目录-Kylin目录详解

    文章目录 1 视界 1 Kylin二进制源码目录解析 2 HDFS 目录结构 2 1 cardinality 2 2 coprocessor 2 3 kylin job id 2 4 resources 2 5 jdbc resources
  • 基于vue构建lib + 类型声明文件

    构建lib 通过创建一个vue项目 实现自己的组件或工具类 然后创建一个index ts作为导出的入口文件 接下来就可以通过Vue CLIkais构建自己的lib了 index ts export Fns from utils fn 创建了
  • 基于STM32的阿里云物联网项目实战

    引言 之前自学了一些关于阿里云物联网项目的开发 收获颇丰 但是总感觉网上的东西太散了 需要自己去不停的收集整理 于是在项目结束后决心自己写一篇比较具有实用性的指导文档 需要声明的是本文档只适合像我一样的新人小白 路过的大佬不喜勿喷 如有疏漏
  • java开发实习生-面试

    redis常用命令 登录 redis cli p a 检查key是否存在 exists key 设置和获取一个键的值 set get 删除键对 del key 同时获取多个 mget linux常用命令 list 查看文件 cd 切换目录
  • 持续交付与敏捷开发的历史

    软件中的 持续交付 不仅仅是一个热门话题 软件的持续交付是软件开发实践和客户保留的圣杯 这也是DevOps今天是如此热门的概念的原因 要了解持续交付的重要性 你需要了解敏捷的历史以及敏捷方法的来源 敏捷软件开发的历史并不是从敏捷宣言开始的
  • Spark:failed to launch: nice -n 0 /opt/spark/bin/spark-class org.apache.spark.deploy.worker.

    查看真实的报错结果 bash 4 4 cat spark org apache spark deploy master Master 1 spark manager 77d4d75859 kbr5v out nohup can t exec
  • 2023-9-11 台阶-Nim游戏

    题目链接 台阶 Nim游戏 include
  • 七大排序算法详解,动图展示 +代码实现,老奶奶看了都直呼内行

    七种 基于比较 的排序 1 插入排序 元素少时插排最快 2 希尔排序 3 选择排序 4 堆排序 5 冒泡排序 6 快速排序 重点 7 归并排序 重点 排序总结 1 插入排序 元素少时插排最快 1 有序区间 黄色区间 无序区间 蓝色区间 每次
  • 人脸识别之目标追踪识别

    人脸识别之目标追踪识别 1 开发工具 Python版本 Anaconda 3 8环境 开发软件 Pycharm社区版 相关模块 sys模块 pypinyin模块 os模块 opencv contrib python 模块 opencv py
  • grafana改用https登录

    grafana添加HTTPS证书 安装 openssl yum install y openssl 创建 certificates openssl req x509 out server crt keyout server key newk
  • mysql--排序

    在项目开发时 为了使查询的数据结果满足用户的要求 通常会对查询出的数据进行上升或下降的排序 MySQL针对不同的开发需求提供两种排序的方式 分别为单字段排序和多字段排序 接下来将对这两种排序方式的语法及使用进行详细讲解 1 单字段排序 单字
  • Android 7.0新特性总结

    2016年8月22日 谷歌正式推送Android 7 0 Nougat 牛轧糖 正式版 他们还会三个月一次推送开发版 而曝光的消息看 第一个开发版就是Android 7 1 Android N主要新增了以下的新特性和优化 一 新的Notif