弃用

每次发布新版本时,某些特定的 Android API 可能会过时,或者需要重构以提供更好的开发者体验或支持新的平台功能。在这些情况下,Android 将正式弃用这些过时的 API,并引导开发者使用新的 API。

弃用意味着我们已终止对这些 API 的官方支持,但它们仍将对开发者可用。本页面重点介绍了此 Android 版本中的一些弃用内容。要查看其他弃用内容,请参阅 API 差异报告

RenderScript

从 Android 12 开始,RenderScript API 已被弃用。它们将继续运行,但我们预计设备和组件制造商将逐渐停止提供硬件加速支持。为了充分利用 GPU 加速,我们建议从 RenderScript 迁移

Android 播放列表

Android 播放列表已弃用。该 API 不再维护,但现有功能仍保留以保持兼容性。

我们建议将播放列表读取并保存为 m3u 文件。

Display API 弃用

Android 设备正以多种不同外形规格上市,例如大屏设备、平板电脑和可折叠设备。为了针对每种设备适当地渲染内容,您的应用需要确定屏幕或显示屏尺寸。Android 曾提供各种 API 来检索此信息。在 Android 11 中,我们引入了 WindowMetrics API 并弃用了以下方法:

在 Android 12 中,我们继续推荐使用 WindowMetrics 并弃用以下方法:

应用应使用 WindowMetrics API 查询其窗口的边界,或使用 Configuration.densityDpi 查询当前密度。

请注意,Jetpack WindowManager 库包含一个 WindowMetrics 类,支持 Android 4.0.1(API 级别 14)及更高版本。

示例

以下是使用 WindowMetrics 的一些示例。

首先,请确保您的应用可以使其 activity 完全可调整大小

activity 应依赖 activity 上下文中的 WindowMetrics 来完成任何与 UI 相关的工作,特别是 WindowManager.getCurrentWindowMetrics()

如果您的应用创建了 MediaProjection,则边界必须正确调整大小,因为投影会捕获显示屏。如果应用是完全可调整大小的,activity 上下文会返回正确的边界。

Kotlin

val projectionMetrics = activityContext
        .getSystemService(WindowManager::class.java).maximumWindowMetrics

Java

WindowMetrics projectionMetrics = activityContext
        .getSystemService(WindowManager.class).getMaximumWindowMetrics();

如果应用不是完全可调整大小的,则必须从 WindowContext 实例中查询边界,并使用 WindowManager.getMaximumWindowMetrics() 检索应用可用的最大显示区域的 WindowMetrics。

Kotlin

val windowContext = context.createWindowContext(mContext.display!!,
      WindowManager.LayoutParams.TYPE_APPLICATION, null)
val projectionMetrics = windowContext.getSystemService(WindowManager::class.java)
      .maximumWindowMetrics

Java

Context windowContext = mContext.createWindowContext(mContext.getDisplay(),
      WindowManager.LayoutParams.TYPE_APPLICATION, null;
WindowMetrics projectionMetrics = windowContext.getWindowManager()
      .getMaximumWindowMetrics();