Android 5.0 主要API概览

API 级别:21

Android 5.0 (LOLLIPOP) 为用户和应用开发者提供了新的功能。本文档介绍了最值得注意的新 API。

有关新平台功能的扼要介绍,另请参阅 Android Lollipop 集锦

开始开发

要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和系统映像。

更新您的目标 API 级别

要进一步针对运行 Android 5.0 的设备优化您的应用,请将 targetSdkVersion 设置为 "21",在 Android 5.0 系统映像上安装该应用并予以测试,然后将更改后的新版应用发布出去。

您既可以使用 5.0 API,也可以支持旧版本,方法是在代码中构建条件,确保先检查系统 API 级别再执行 minSdkVersion 不支持的 API。要详细了解有关保持向后兼容的信息,请参阅支持不同平台版本

要详细了解有关各个 API 级别运行方式的信息,请参阅什么是 API 级别?

重要的行为变更


请注意,如果您之前发布了 Android 版应用,那么您的应用可能会受到 Android 5.0 变化的影响。

如果您尚未针对新的 Android 运行时 (ART) 测试您的应用…

第 4.4 版引入了一个全新的实验性功能,即 Android 运行时 (ART)。在第 4.4 版中,ART 是可选的,默认运行时仍为 Dalvik。对于 Android 5.0,默认运行时现在是 ART。

有关 ART 新功能的概述,请参阅 ART 简介。主要包括下面的一些新功能:

  • 预先 (AOT) 编译
  • 经过改进的垃圾回收 (GC)
  • 经过改进的调试支持

大多数 Android 应用应该不用做出任何更改即可直接在 ART 下运行。不过,Dalvik 上运行的部分技术在 ART 上无法运行。要了解最重要的问题,请参阅在 Android 运行时 (ART) 上验证应用行为。请特别注意以下情况:

  • 您的应用使用 Java 原生接口 (JNI) 运行 C/C++ 代码。
  • 您使用的开发工具可生成非标准代码(例如某些混淆代码)。
  • 您使用的技术与垃圾回收压缩不兼容。(虽然 ART 当前没有实施垃圾回收压缩,但在 Android 开放源代码项目中,垃圾回收压缩正处于开发阶段)。

如果您的应用实施通知…

请确保您的通知能够反映出 Android 5.0 的这些变化。要详细了解如何设计适用于 Android 5.0 及更高版本的通知,请参阅通知设计指南

Material Design 设计样式

通知是在白色(或颜色非常浅的)背景上绘制的深色文本,以便与新的 Material Design 设计小部件协调一致。请确保所有通知在新的配色方案下都能够正常显示。如果通知无法正常显示,请予以修复:

  • 使用 setColor() 在图标图片后面的圆圈中设置一种强调色彩。
  • 更新或移除有颜色的资源。系统会忽略操作图标和主通知图标中的所有非 Alpha 通道。您应当假定这些图标仅包含 Alpha 通道。系统会用白色来绘制通知图标,而用深灰色来绘制操作图标。
声音和振动

如果您当前在使用 RingtoneMediaPlayer 或 Vibrator 类为通知添加声音和振动,请移除该代码,这样系统才能以优先模式正常呈现通知。若要添加声音和振动,请改用 Notification.Builder 方法。

将设备设置为 RINGER_MODE_SILENT 会导致它进入新的优先模式。如果将设备设置为 RINGER_MODE_NORMAL 或RINGER_MODE_VIBRATE,则会使其退出优先模式。

以前,Android 将 STREAM_MUSIC 用作主音量流,以此来控制平板电脑设备的音量。在 Android 5.0 中,手机和平板电脑设备的主音量流现已统一,均由 STREAM_RING 或 STREAM_NOTIFICATION 控制。

通知在锁定屏幕上的公开程度

在 Android 5.0 中,通知现在默认显示在用户的锁定屏幕上。用户可以选择不公开敏感信息,这样的话系统会自动修改通知显示文本。要自定义这种经过修改的通知,请使用 setPublicVersion()

如果通知不包含个人信息,或者您希望在通知中显示媒体播放控件,请调用 setVisibility() 方法,并将通知的公开程度的级别设置为 VISIBILITY_PUBLIC

媒体播放

如果您要实施可呈现媒体播放状态或传输控件的通知,请考虑使用新的 Notification.MediaStyle 模板,而不是自定义RemoteViews.RemoteView 对象。无论您选择使用哪种方法,请务必将通知的公开程度设置为 VISIBILITY_PUBLIC,以便用户可以在锁定屏幕中使用您的控件。请注意,从 Android 5.0 开始,系统不再在锁定屏幕中显示 RemoteControlClient 对象。有关详情,请参阅如果您的应用使用 RemoteControlClient

提醒通知

现在,当设备处于活动状态(即设备未锁定且屏幕亮起)时,通知可以显示在小型浮动窗口中(也称为提醒通知)。此类通知采用的显示形式与紧凑型通知采用的形式类似,不同的是提醒通知还会显示操作按钮。用户无需退出当前应用,即可根据提醒通知执行操作或关闭提醒通知。

可以触发提醒通知的情景示例包括:

  • 用户在全屏模式下执行操作(应用使用 fullScreenIntent
  • 通知的优先级较高,并且使用铃声或振动

如果您的应用在上述任意一种情景下实施通知,请确保提醒通知能够正常呈现。

如果您的应用使用 RemoteControlClient…

RemoteControlClient 类现已被弃用。请尽快改用全新的 MediaSession API。

对于 MediaSession 或 RemoteControlClient,Android 5.0 中的锁定屏幕不会显示传输控件。相反,您的应用可以通过通知在锁定屏幕中提供媒体播放控件。这样,您的应用就能够更好地控制媒体按钮的展现方式,同时还能让用户无论在设备处于锁定还是解锁状态下都可以执行同样的操作。

为此,Android 5.0 引入了一个新的 Notification.MediaStyle 模板。Notification.MediaStyle 将您通过Notification.Builder.addAction() 添加的通知操作转换到在您应用的媒体播放通知中内嵌的紧凑型按钮中。将会话令牌传递到 setSession() 方法,指示系统此通知控制正在进行的媒体会话。

请务必将通知的公开程度设置为 VISIBILITY_PUBLIC,将通知标为安全通知,以便在任何锁定屏幕(安全屏幕或其他屏幕)上显示。有关详情,请参阅在锁定屏幕上显示通知

如果您的应用是在 Android TV 或 Wear 平台上运行,请通过实施 MediaSession 类来显示媒体播放控件。如果您的应用需要在 Android 设备上接收媒体按钮事件,您还应当实施 MediaSession

如果您的应用使用 getRecentTasks()…

由于 Android 5.0 中引入了并行文档和活动任务这一新功能(请参阅下文中的“最近用过”屏幕中的并行文档和活动),ActivityManager.getRecentTasks() 方法现已被弃用,以更好地保护用户隐私。为了实现向后兼容性,此方法仍会返回它的一小部分数据,包括调用应用自身的任务,同时还可能包括其他一些非敏感任务(例如“首页”)。如果您的应用在使用此方法检索它自身的任务,请改用 getAppTasks() 检索该信息。

如果您使用的是 Android 原生开发工具包 (NDK)…

Android 5.0 支持 64 位系统。64 位增强功能增加了寻址空间并提高了性能,同时仍能全面支持现有的 32 位应用。64 位支持还提高了 OpenSSL 的加密性能。另外,此版本还引入了新的原生媒体 NDK API 以及原生 OpenGL ES (GLES) 3.1 支持。

要利用 Android 5.0 中提供的 64 位支持,请从 Android NDK 页面下载并安装 NDK 10c 版。要详细了解 NDK 的重要变化和错误修复,请参阅 10c 版版本说明

如果您的应用绑定到某项服务…

Context.bindService() 方法现在要求获取显式 Intent;如果获取的是隐式 intent,则会引发异常。为了确保您的应用是安全的,请在启动或绑定 Service 时使用显式 intent,并且不要为此服务声明 intent 过滤器。

如果您的应用使用 WebView…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值