Загрузка классов базовых компонентов Android и _java objects_ lifecycle

Несмотря на то, что существует множество ресурсов для жизненного цикла приложений, активности и активности, видимых с точки зрения API (методы onCreate/Destroy/Whatnot()), почти нет информации о фактическом жизненном цикле объектов для этих компонентов с точки зрения Java. Так, например, я видел (на видеоролике YouTube о маракане), что услуги - это в основном одиночные игры, и это заставило меня задуматься о состоянии IntentService - может ли он быть общим? Или это тоже сингл?

Я предполагаю, что сначала создается процесс (по Zygote?) вместе с экземпляром DalvikVM, а затем классы для всех компонентов, объявленных в манифесте, загружаются (?), а затем создаются при необходимости - но это догадки. Я не могу вообще ответить на такие вопросы, как:

  • являются BroadcastReceivers экземплярами только один раз или один раз каждый раз, когда широковещание получено?
  • - это приложение singleton? Гарантировано?
  • MyApplication.class загружен перед всеми другими компонентами? Всегда создавался? Даже когда запускается только манифест, зарегистрированный BR моей стороны?
  • когда конкретная Application.class моя (вероятно, будет) выгружена (так что я должен проверить, нужна ли ее статические поля для инициализации (в том случае, когда вызывающий абонент инициализирует их))

Ты видишь, я здесь в темноте. Я бы хотел, чтобы некоторый анализ загрузки, создания экземпляров и сбора мусора основных компонентов приложений Android - ссылок на документы и/или приветствия источника. Чем техничнее, тем лучше.

Refs: this сообщение от @inazaruk.
Также Статические ссылки очищаются - удаляет ли Android классы во время выполнения, если не используется?

Ответы