Разница между setBackgroundDrawable() и setBackground()

Я только что обновил цель создания Android-проекта до API 17, и теперь я получаю предупреждения о том, что setBackgroundDrawable устарел. Ответ заключается в использовании setBackground, но недоступном в более старых версиях.

Есть ли какое-либо фактическое преимущество в использовании нового метода или Google просто хочет изменить имя? Я не вижу смысла усложнять мой код с проверкой или анализом версии платформы, если они работают одинаково.

Ответ 1

Есть ли какое-либо фактическое преимущество в использовании нового метода или Google просто хочет изменить имя?

Казалось, они хотели изменить имя, посмотреть исходный код:

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

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }

Все работы по-прежнему выполняются в setBackgroundDrawable(). На данный момент вы можете игнорировать предупреждения об устаревании, но понимаете, что в будущем API setBackgroundDrawable() будет удален.


В случае, если вам интересно, setBackgroundResource(int resid) просто создает извлечение из идентификатора ресурса и вызывает setBackground() (который снова вызывает setBackgroundDrawable())...