setBackgroundDrawable()和setBackground()之间的区别

我刚刚将我的Android项目的构建目标升级到API 17,现在我收到有关不推荐使用setBackgroundDrawable的警告。 答案似乎是使用setBackground,但在旧版本中不可用。

使用新方法有什么实际优势,或Google是否只想更改名称? 如果两者的工作方式相同,我认为使用平台版本检查或reflection使我的代码复杂化没有任何意义。

使用新方法有什么实际优势,或Google是否只想更改名称?

他们似乎只想更改名称,看看源代码 :

public void setBackground(Drawable background) { //noinspection deprecation setBackgroundDrawable(background); } @Deprecated public void setBackgroundDrawable(Drawable background) { ... } 

所有的工作仍然在setBackgroundDrawable() 。 目前,您可以忽略弃用警告,但要了解在将来的API中,将删除API setBackgroundDrawable()


如果您好奇, setBackgroundResource(int resid)只是从资源ID创建一个drawable并调用setBackground() (再次调用setBackgroundDrawable() )…