Подтвердить что ты не робот

Инициализация приложений для Android

У меня есть приложение, которое управляется конфигурацией XML: различные свойства приложения загружаются во время запуска приложения, анализируя XML и инициализация статических переменных некоторого класса. Данные, прочитанные из этого XML-диски разные. Действия приложения. В настоящее время у меня есть называемый "синтаксический анализ и инициализация свойств" из onCreate() моей основной деятельности.

У меня есть несколько вопросов относительно этого случая/подхода:

  • Должен ли я вызвать метод инициализации приложения из приложения Объект или текущий подход правильный? Какие преимущества/ недостатки делают/получат/имеют, если я захочу вызывать его из Объект приложения?

  • Нам действительно нужен статический класс для хранения свойств приложения? Или мы можем иметь все свойства как статическую переменную Collection в объекте приложения?

  • Анализ XML (~ 200 узлов) при загрузке приложения может занять некоторое время (не уверенный, как долго tho); Как я могу избежать страшных ANR? Я использую Pull Parser.

Пожалуйста, помогите мне найти ответы на эти вопросы.

Спасибо.

4b9b3361

Ответ 1

Объект Application используется для совместного использования состояния non-persistent в приложении. Я не думаю, что вам нужно будет использовать класс Application вообще. Вы можете выполнить инициализацию в методе onCreate() Activity, который вызывается первым. В укажите документацию:

Подкласс не является обязательным; большинству приложений это не понадобится. В отсутствие подкласса Android использует экземпляр базового класса Application.

Вам не нужно создавать свой собственный класс для хранения свойств приложения. Это делается для вас SharedPreferences.

Вы также должны посмотреть метод setDefaultValues() в PreferenceManager  класса, так как это задает предпочтения из данных в XML файле. Что приятно в этом методе, так это использование параметра readAgain, чтобы XML анализировался только один раз - при первом запуске приложения - не каждый раз.

Ответ 2

  • Это зависит от того, что вы инициализируете. Приложение onCreate() должно использоваться, когда вы делаете то, что нужно сделать, прежде чем какая-либо часть вашего приложения будет работать правильно, и его нужно выполнить только один раз, тогда как Activity/Service/etc onCreate() следует использовать для вещей, которые необходим только для этого компонента и должен выполняться несколько раз.

    Основная проблема, которую я испытываю для ввода всей вашей инициализации в компонент, заключается в том, что в дальнейшем это упростит ваше приложение. Предположим, вы хотите, чтобы какая-то активность в вашем приложении была доступна по-разному - теперь вам нужно либо переместить код инициализации в приложение, либо вам придется дублировать код инициализации в незанятом действии.

  • Похоже, вы должны проверить SharedPreferences, особенно PreferenceManager.getDefaultSharedPreferences(). Настройки будут сохраняться между сеансами, и это даст вам легкий доступ к простым свойствам из любого Контекста.

  • Threading. Я считаю AsyncTask самым простым способом выполнить эту задачу; там хорошая запись в Google. В качестве альтернативы вы можете запустить службу, чтобы сделать это в фоновом режиме, имея переднюю активность, информировать пользователя о том, что вы загружаете приложение.