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

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

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

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

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

  3. Парсинг XML (~200 узлов) во время загрузки приложения мог бы занять время (не уверенный сколько времени tho); Как я могу избежать страшного ANRS? Я использую Синтаксический анализатор Получения по запросу.

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

Спасибо.

13
задан Samuh 21 December 2009 в 08:45
поделиться

2 ответа

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

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

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

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

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

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

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

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

10
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: