Android-11-正式发布---开发者们的舞台已就绪,高级安卓面试题及答案
以人为本、灵活控制与隐私安全
以人为本
Android 11 致力于凸显人的要素,且善于沟通。我们重塑了您在手机上进行沟通的方式,也让操作系统能识别出那些对您来说更重要的人,让您能更快速地和他们联系。对于开发者来说,Android 11 可以帮助您在应用中实现更深入的会话和更个性化的互动体验。
- 会话通知 会显示在通知栏顶部的专门区域,其设计更凸显联系对象,且提供了会话特定的操作,例如以 Bubbles 的形式打开聊天、在主屏幕中创建会话快捷方式,以及设置提醒。
- Bubbles 可以让用户在手机上进行多任务切换时依然保持对话可见并且可交互。消息和聊天应用可以通过基于通知的 Bubbles API,在 Android 11 上提供这种全新体验。
- 键盘提示整合功能 可以让自动填写应用以及 IME (输入法编辑器) 在 IME 建议栏中安全地向用户提供基于上下文的实体和字符串,使得输入更加便利。
△ Bubbles 和以人为本的会话
灵活控制
Android 11 让用户们得以快速访问所有的智能设备,并集中控制它们。开发者们则可以通过全新的 API 来帮助用户控制智能设备和管理媒体播放:
- 设备控制 ( Device Controls ) 让用户得以更快、更轻松地访问和控制他们连接的设备。只需长按电源按钮就可以调出设备控制菜单,一站式完成设备控制。应用也可以通过新的 API 出现在这个控制菜单中。详细信息请访问 官方文档。
- 媒体控制 ( Media Controls ) 让用户得以更快捷地切换音频和视频内容的播放设备——不论是耳机、麦克风还是电视。详细信息请访问官方文档。
△ 设备控制和媒体控制
隐私安全
在 Android 11 中,我们为用户带来了更高的掌控能力,让他们能更好地管理敏感权限。我们还会通过更快速的更新来持续确保设备安全。
单次授权 - 用户现在可以授予应用一次性的权限来访问设备的麦克风、摄像头或者位置信息。应用下次被使用时需要再次请求权限。详细信息请访问 官方文档。
△ Android 11 中的单次授权对话框
后台位置 - 想访问后台位置信息现在需要用户在授予运行时权限外进行更进一步的操作。如果您的应用需要访问后台位置信息,系统会要求您必须先请求前台位置权限。您可以通过 单独的权限申请 来进一步要求访问后台位置信息,系统会将用户带到设置页面 (Settings) 中完成授权操作。
另外需要注意的是,我们在今年二月宣布,Google Play 开发者需要获得批准后才可以让应用在后台访问位置信息,以防止滥用。现在我们为开发者提供更长的时间来做出修改,在 2021 年之前我们不会强行要求现有的应用遵守本政策。详细信息请访问 官方文档。
权限自动重置 - 如果用户在很长一段时间里未使用某应用,Android 11 将 “自动重置” 所有与该应用关联的运行时权限并通知用户。在用户下次使用该应用时,应用可以再次请求权限。详细信息请访问 官方文档。
分区存储 - 我们一直在努力更好地保护外部存储上的应用和用户数据,还加入了更多的改进以便让开发者更轻松地进行迁移。详细信息请访问 官方文档。
Google Play 系统更新 - 自去年发布以来,Google Play 系统更新让我们能更快速地更新操作系统核心组件,并覆盖 Android 生态系统中的众多设备。在 Android 11 中,可更新的模块数量增加了一倍有余,新增的 12 个可更新模块,为用户和开发者带来更好的隐私性、安全性和一致性。
BiometricPrompt API - 开发者现在可以通过 BiometricPrompt API 来指定其应用所需的生物识别身份验证强度类型,用来解锁或者访问应用中的敏感内容。为了向下兼容,我们也将这些功能加入到了 Jetpack Biometric 开发库 中。随着工作的进展,我们会为大家带来进一步的更新。
身份认证 API ( Identity Credential API ) - 这个 API 会带来全新的使用场景,支持包括驾驶执照、国民身份证和数字身份证。我们正在与各政府机构和行业伙伴合作,以确保 Android 11 为数字化身份认证体验做好准备。
在 这里 阅读有关 Android 11 隐私功能的详细信息。
实用创新
更强的 5G 支持 - Android 11 可以让开发者利用 5G 网络更快的速度和更低的延迟。您可以知晓用户何时 连接到 5G 网络,查看 连接是否处于计费状态,并且 估测连接的带宽。为了帮助您即刻打造 5G 体验,我们也在 Android Emulator 中加入了 5G 支持。请访问 5G 开发者网页,了解如何在 Android 上使用 5G 功能。
△ 将高速体验带出家门,5G 可以让您的随行移动体验更加流畅,让您随时与周边环境、朋友、家人互动并满足工作的需要
新的屏幕类型 - 设备厂商们也在持续进行创新,将新的屏幕形态投入市场,包括挖孔屏和瀑布屏。Android 11 已经在平台中增加了对这些屏幕的支持,并提供了相应的 API 方便您优化应用。您可以通过现有的 Display Cutout API 来管理挖孔屏和瀑布屏。您可以通过设置 新的窗口布局属性 来使用整个瀑布屏,并通过 瀑布屏边衬区) (insets) API 来管理屏幕边缘附近的互动。
呼叫过滤服务 - Android 11 可以帮助呼叫过滤应用更好地管理骚扰电话。应用在呼叫详细信息中可以获取来电的 STIR/SHAKEN) 验证状态 (这个标准可以防止来电 ID 欺诈),并能报告拒接来电的原因。应用还可以自定义系统提供的 呼叫后屏幕 (post call screen),方便用户执行诸如 “将呼叫方标记为骚扰电话” 或 “添加到联系人” 之类的操作。
优化与品质
操作系统弹性 - 在 Android 11 中,我们通过对内存回收操作 (比如根据 RSS HWM 阈值强制用户无法感知的进程重启) 进行微调,使操作系统整体更具动态性和弹性。另外,为了改善性能和内存的使用,Android 11 还增加了 Binder 缓存,通过缓存那些检索相对静态数据的系统服务,优化了使用率高的 IPC 调用。Binder 缓存还通过减少 CPU 时间延长了电池寿命。
同步 IME 切换效果 - 这是一组全新的 API,让您可以在 IME (输入法编辑器,也叫软键盘) 和系统栏进出屏幕时同步调整应用中的内容,从而更轻松地创建出自然、直观、流畅的 IME 切换效果。为了确保切换时做到逐帧精确,新的 WindowInsetsAnimation.Callback API 会在系统栏或 IME 移动时逐帧告知应用边衬区的变化。此外,您可以通过新的 WindowInsetsAnimationController API 控制系统 UI,包括系统栏、IME、沉浸模式等。阅读 这篇博文 了解更多。
△ 左侧示意: 通过边衬区动画监听器实现 IME 同步切换效果 右侧示意: 通过 WindowInsetsAnimationController 实现应用驱动的 IME 体验
HEIF 动画可绘制对象 - ImageDecoder API 现在允许您解码和渲染存储在 HEIF 文件中的图像序列动画,方便您引入高品质的素材,同时最大程度地减少流量消耗和 APK 尺寸。相对于 GIF 动画,HEIF 图像序列可以显著减小文件尺寸。
原生图像解码器 - 应用可以使用新的 NDK API 来通过原生代码解码和编码图像 (如 JPEG、PNG、WebP),以便进行图形或后期处理,而且因为您无需捆绑外部代码库,从而得以保持较小的 APK 尺寸。原生解码器还可以从 Android 持续的平台安全更新中获益。我们提供了 NDK 样例代码 作为使用参考。
MediaCodec 中的低延迟视频解码 - 低延迟视频对于 Stadia 等实时视频流应用和服务至关重要。支持低延迟播放的视频编解码器会在解码开始后尽快返回流的第一帧。应用可以使用新 API 来针对特定编解码器 检查) 和 配置 低延迟播放。
可变刷新率 - 应用和游戏现在可以通过 新的 API) 为其窗口设置首选帧率。大多数 Android 设备以 60Hz 的刷新率更新屏幕,但是某些设备支持多种刷新率,例如 90Hz 和 60Hz,并可在运行时切换。在这些设备上,系统会基于首选帧率来为应用选择最佳刷新率。您可以通过 SDK 和 NDK 来使用该 API。详细信息请访问 官方文档。
动态资源加载器 - Android 11 提供了一个新的公开 API 来让应用在运行时动态加载资源和素材。通过 Resource Loader 框架,您可以在应用或游戏中包含一套基本资源,然后在运行时根据需要加载其他资源,或更改已加载的资源。
Neural Networks API (NNAPI) 1.3 - 我们持续增加算子和控制,以支持 Android 设备上的机器学习。为了优化常见的使用场景,NNAPI 1.3 增加了优先级和超时、内存域 (memory domains) 以及异步指令队列的 API。新的算子支持包含有符号整数非对称量化以及分支和循环的高级模型,hard-swish 算子则可以用于加速下一代设备上视觉模型 (如 MobileNetV3)。
开发者体验
应用兼容性工具 - 我们努力将大多数 Android 11 行为变更设置为可选择开启,从而最大限度地减少对兼容性带来的影响,除非您将应用的 targetSdkVersion 设置为 30,否则这些变更不会生效。如果您是通过 Google Play 发布应用,则有一年多的时间来选择支持这些变更,但我们建议尽早开始测试。为了帮助您进行测试,Android 11 允许您单独开启或关闭其中的许多变更。详细信息请访问 官方文档。
应用退出原因 - 了解应用退出的原因以及当时的状态十分重要——包括应用所在的设备类型、内存配置和运行场景。Android 11 通过 退出原因 API 让这个事情变得更加容易: 您可以使用该 API 来查看应用最近退出的 详细信息。
数据访问审核 - 数据访问审核可以让您更好地了解自己的应用访问用户数据的情况,以及访问来自的用户流程。例如,它能帮您识别无意的私有数据访问,不论其来自于您自己的代码还是其他 SDK。详细信息请访问 官方文档。
ADB 增量安装 ( ADB Incremental ) - 在开发过程中使用 ADB (Android Debug Bridge) 安装体积较大的 APK 可能会拖慢速度,影响您的工作效率,对 Android 游戏开发者而言尤其如此。Android 11 带来了 ADB Incremental,现在从开发机向 Android 11 设备上部署大型 APK (2GB 以上) 的速度可以提高 10 倍之多。详细信息请访问 官方文档。
Kotlin 可空性注解 - Android 11 为公共 API 中的更多方法增加了可空性注解。而且,它将一些现有的注解从警告升级为错误。这可以帮助您在构建时就发现问题,不用等到运行时才出错。阅读 此文 了解更多。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后相关架构及资料领取方式:
点击我的GitHub免费领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。**
更多推荐
所有评论(0)