返回

Android `getResources().getDrawable()` 已弃用:告别冗余,拥抱简洁

Android

Android getResources().getDrawable() 已弃用:告别冗余,拥抱简洁

问题概述

随着 Android API 22 的到来,getResources().getDrawable() 方法已被标记为弃用。该方法曾经用于从资源 ID 中检索 Drawable 对象,但现在不再需要使用 getResources()

解决方法

为了替代 getResources().getDrawable(),请直接使用 getDrawable() 方法。它会在上下文中隐含地调用 getResources(),因此无需显式指定。

示例代码

// 已弃用
Drawable drawable = getResources().getDrawable(R.drawable.my_drawable);

// 正确
Drawable drawable = getDrawable(R.drawable.my_drawable);

优点

采用 getDrawable() 方法带来了以下优势:

  • 简洁性: 代码更简洁,避免了冗余的 getResources() 调用。
  • 一致性: API 更加一致,简化了开发人员的学习和使用。

为什么使用 getDrawable()

在 API 22 之前,getResources().getDrawable() 方法是获取 Drawable 对象的标准方式。然而,随着 Android 系统的演进,隐式调用 getResources() 已成为多余。

直接使用 getDrawable() 消除了不必要的冗余,使代码更易于理解和维护。

注意事项

  • 确保你的应用程序针对 API 22 及更高版本进行编译,以避免使用弃用的 getResources().getDrawable() 方法。
  • getDrawable() 方法仅适用于 Drawable 资源。其他资源类型(如字符串、布局和颜色)仍然需要使用 getResources() 来获取。

常见问题解答

  • Q:为什么 getResources().getDrawable() 被弃用了?
    • A:因为它不再需要 getResources(),该方法已隐式调用它。
  • Q:直接使用 getDrawable() 还有什么好处吗?
    • A:它可以提升性能,因为省去了额外的 getResources() 调用。
  • Q:对于其他资源类型(如字符串),是否还需要使用 getResources()
    • A:是的,getDrawable() 方法仅适用于 Drawable 资源。
  • Q:是否必须针对 API 22 及更高版本进行编译?
    • A:是的,以避免使用已弃用的 getResources().getDrawable() 方法。
  • Q:有什么推荐的代码重构工具可以帮助我找到和替换 getResources().getDrawable() 用法吗?
    • A:建议使用 Android Studio 的重构功能或其他第三方代码分析工具。

结论

放弃 getResources().getDrawable() 并拥抱 getDrawable() 可以简化 Android 开发,提高代码的简洁性、一致性和性能。通过采用这种新的做法,你可以提升应用程序的质量和可维护性。