Я разрабатываю приложение для Android, которое использует веб-службу для получения данных с сервера, для этого у меня есть три разных набора URL-адресов для указания системы разработки, тестового сервера и реального сервера. Когда я хочу подать заявку на тестирование / живую, сложно изменить URL. поэтому я планировал сделать его настраиваемым, чтобы приложение могло получать соответствующий URL-адрес на основе константы конфигурации типа сборки. Так,
- Какой лучший способ сохранить эти константы, статический класс Java или открытый интерфейс Java или файл ресурсов xml.? Когда? Зачем?
- что дает лучшую производительность ?, Когда? Зачем?
Пример: xml-ресурс
<integer name="config_build_type">0</integer>
<string-array name="url_authentication">
<item >http://development.com/xxxx</item>
<item >http://test.com/xxx</item>
<item >http://example.com/xxx</item>
</string-array>
Статическая константа Java
public class Config {
public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live
public static final String[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"};
}
Ответы:
Между ними существует большая разница в том, что вы можете ссылаться на ресурсы проекта в своих XML-макетах. Они доступны в контексте приложения и, следовательно, доступны во всем приложении. Самым большим преимуществом использования ресурсов проекта является простота доступа и то, что они позволяют значительно организовать свой проект.
static final
константы компилируются в байт-код java; ресурсы проекта компилируются в двоичный формат в apk. Доступ к любому из них чрезвычайно эффективен ... если между ними есть разница, это в лучшем случае тривиально.Нет установленного правила о том, как вы должны использовать ресурсы / константы в своем проекте. Тем не менее, я лично использую ресурсы для значений, которые мне могут понадобиться в моем коде XML или Java. С другой стороны, я обычно использую
static final
константы для значений , которые будут только использовать мой код Java и специфичны для моей реализации.Также обратите внимание, что можно загружать ресурсы XML во время выполнения в зависимости от текущей конфигурации устройства (например, размера экрана, локали и т. Д.). Поэтому вы должны принять это во внимание при принятии решения о том, следует ли объявлять константу в XML или непосредственно в ваших
.java
файлах.источник
Для людей, которые хотят увидеть, как мы можем использовать класс для определения наших констант и вызова в любом месте, где нам нужно.
Теперь мы можем использовать указанные выше константы следующим образом.
источник
В общем случае:
источник
Всегда полезно извлекать строки пользовательского интерфейса из кода вашего приложения и хранить их во внешнем файле. Android упрощает это с помощью каталога ресурсов в каждом проекте Android.
источник
Я думаю, что оба варианта кажутся хорошими, но дело в том, что это зависит от ваших требований.
Если у вас есть значения (ссылка на веб-службу) в XML и предположим, что есть какие-либо изменения в ваших значениях (ссылка на веб-службу), вы можете легко изменить их только в файле XML.
Но если вы используете внутренние классы как статические переменные, вам необходимо изменить все файлы классов.
Поэтому я предлагаю отделить константы от исходного файла, поместить их в ресурс и получить к нему доступ.
источник
Я рад, что кто-то спросил об этом ... плюс один!
Ресурсы проекта нуждаются в доступе к Context, который недоступен в статических методах (если вы не передаете его и т. Д.), Но всегда доступен в Activity - кажется, что существует предпочтительное соединение между ресурсами и макетами. Для переменных и констант приложения, которые могут обрабатываться статическими методами, я создаю абстрактный класс и выполняю статический импорт (этого класса констант) во всех других файлах классов проекта.
ПВС
источник