Несколько классов, расширяющих приложение

два класса расширяют Application

  • Один класс, который я зарегистрировал в манифесте, и использую его как Application, должен быть
  • Второй класс - это мой класс утилит. Он делает много ввода-вывода и имеет несколько вспомогательных методов. Для ввода/вывода вам нужен контекст (getAssets и т.д.), Поэтому я неохотно расширил приложение.

Примечание:

Все работает так, как должно.

Мой вопрос:

Есть ли недостатки в использовании нескольких классов Application? Это даже рекомендуется?

Несколько мыслей:

  • Как и что произойдет, если бы у меня были методы onCreate и другие методы обратного вызова, определенные в обоих классах?
  • Как зарегистрировать их как в манифесте? и т.д.

PS: Я знаю, что могу просто использовать поле для хранения контекста во втором классе.

Ответ 1

Я думаю, что это не рекомендуется вообще, потому что на Application может быть только один экземпляр (таким образом, только один класс).

Я очень подозрительно отношусь к тому, что действительно работает. Вы говорите об утилитарном классе, поэтому, возможно, вы используете статические методы, которые работают хорошо. Но вы должны использовать свой отладчик, и я почти уверен, что вы обнаружите, что один из ваших классов никогда не создается.

Кстати, официальная документация гласит, что:

"Как правило, нет необходимости в подклассе Application. В большинстве ситуаций статические синглтоны могут предоставлять одни и те же функциональные возможности более модульным образом. Если вашему singleton нужен глобальный контекст (например, для регистрации широковещательных приемников), функция для извлечения ему может быть предоставлен контекст, который внутренне использует Context.getApplicationContext() при первом конструировании singleton."