В чем заключается концепция R.java?

В Android R.java используется для обеспечения доступа к ресурсам, определенным в файлах XML. Чтобы получить доступ к ресурсу, нам нужно вызвать метод findViewById(), передав идентификатор ресурса, который нужно получить.

Это похоже на Spring, где bean-компоненты определяются в контексте XML и извлекаются с использованием контекста приложения. context.getBean("beanId")

Это обеспечивает слабую связь, поскольку bean-компоненты определяются извне и могут быть изменены без внесения изменений в код.

Это меня смутило. Хотя то, что делает Android, похоже на Spring, какое преимущество он предлагает?

  1. Какой смысл иметь промежуточную версию R.java? Не могли бы мы просто получить ресурсы непосредственно из XML, используя ресурс контекст чтения/приложения. например findViewById("resourceId")
  2. Нет никакой слабой связи. Поскольку ссылки в R.java генерируются автоматически, как можно удалить ресурс и добавить новый?
  3. Какому шаблону проектирования он следует (если он есть)?
  4. Не лучше ли вводить ресурсы с помощью IOC (например, Roboguice)? Почему тогда гугл решил выдать нам такие странный способ работы с ресурсами?

Прошу прощения за невежество. Я начинающий Java-разработчик, пробующий слишком много вещей одновременно. :-) Спасибо всем за отзывы.

37
задан Jonik 18 September 2015 в 13:50
поделиться